Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-15.log failed

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
study:java:design_pattern:iterator [2008/09/13 03:52] – created bananastudy:java:design_pattern:iterator [2008/09/13 04:03] (現在) banana
行 11: 行 11:
 그런데 디자인에 대한 반복자의 영향도 매우 중요한 부분입니다. 컬렉션 객체안에 들어있는 그런데 디자인에 대한 반복자의 영향도 매우 중요한 부분입니다. 컬렉션 객체안에 들어있는
 모든 항목에 접근하는 방식이 통일되어 있으면 어떤 종류의 집합체에 대해서도 사용할 수 있는 모든 항목에 접근하는 방식이 통일되어 있으면 어떤 종류의 집합체에 대해서도 사용할 수 있는
-다형적인 코드를 만들 수 있기 때문이죠. 메뉴 항목이 배열로 저장되어 있든 ArrayList로+다형적인 코드를 만들 수 있기 때문이죠. 메뉴 항목이 배열로 저장되어 있든 %%ArrayList%%
 저장되어 있든 신경쓰지 않고 작업을 처리할 수 있었던 printMenu() 메소드가 그런 예 가운데 저장되어 있든 신경쓰지 않고 작업을 처리할 수 있었던 printMenu() 메소드가 그런 예 가운데
 하나라고 할 수 있습니다. Iterator 객체만 있으면 되는 거니까요. 하나라고 할 수 있습니다. Iterator 객체만 있으면 되는 거니까요.
行 21: 行 21:
  
 이제 클래스 다이어그램을 살펴보도록 할까요? 이제 클래스 다이어그램을 살펴보도록 할까요?
 +
  
 ===== Class Diagram ===== ===== Class Diagram =====
 {{:study:java:design_pattern:iterator.jpg|Iterator Pattern}} {{:study:java:design_pattern:iterator.jpg|Iterator Pattern}}
 +
 +%%ConcreteIterator%% 구상클래스의 예로 배열에 대해 Iterator 인터페이스를 구현해 보겠습니다.
 +
 +===== Implement an Iterator interface =====
 +<code java>
 +import java.util.Iterator;
 +
 +public class DinnerMenuIterator implements Iterator{
 +    MenuItem[] list;
 +    int position = 0;
 +
 +    public DinnerMenuIterator(MenuItem[] list){
 +       this.list = list;
 +    }
 +     
 +    public Object next(){
 +       MenuItem menuItem = items[position];
 +       position = position + 1;
 +       return menuItem;
 +    }
 +
 +    public boolean hasNext(){
 +       if(position >= items.length || items[position] == null){
 +          return false;
 +       } else {
 +          return true;
 +       }
 +    }
 +
 +    public void remove(){
 +       if(position <= 0){
 +          throw new IllegalStateException("next()를 한번도 호출하지 않은 상태에서는 삭제할 수 없습니다.");
 +       }
 +       if(list[position-1] !=null){
 +          for(int i = position-1; i < (list.length-1); i++) {
 +             list[i] = list[i+1];
 +          }
 +          list[list.length-1] = null;
 +       }
 +    }
 +}
 +
 +</code>
  

QR Code
QR Code study:java:design_pattern:iterator (generated for current page)