差分
このページの2つのバージョン間の差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| study:java:design_pattern:iterator [2008/09/13 03:52] – created banana | study:java:design_pattern:iterator [2008/09/13 04:03] (現在) – banana | ||
|---|---|---|---|
| 行 11: | 行 11: | ||
| 그런데 디자인에 대한 반복자의 영향도 매우 중요한 부분입니다. 컬렉션 객체안에 들어있는 | 그런데 디자인에 대한 반복자의 영향도 매우 중요한 부분입니다. 컬렉션 객체안에 들어있는 | ||
| 모든 항목에 접근하는 방식이 통일되어 있으면 어떤 종류의 집합체에 대해서도 사용할 수 있는 | 모든 항목에 접근하는 방식이 통일되어 있으면 어떤 종류의 집합체에 대해서도 사용할 수 있는 | ||
| - | 다형적인 코드를 만들 수 있기 때문이죠. 메뉴 항목이 배열로 저장되어 있든 ArrayList로 | + | 다형적인 코드를 만들 수 있기 때문이죠. 메뉴 항목이 배열로 저장되어 있든 |
| 저장되어 있든 신경쓰지 않고 작업을 처리할 수 있었던 printMenu() 메소드가 그런 예 가운데 | 저장되어 있든 신경쓰지 않고 작업을 처리할 수 있었던 printMenu() 메소드가 그런 예 가운데 | ||
| 하나라고 할 수 있습니다. Iterator 객체만 있으면 되는 거니까요. | 하나라고 할 수 있습니다. Iterator 객체만 있으면 되는 거니까요. | ||
| 行 21: | 行 21: | ||
| 이제 클래스 다이어그램을 살펴보도록 할까요? | 이제 클래스 다이어그램을 살펴보도록 할까요? | ||
| + | |||
| ===== Class Diagram ===== | ===== Class Diagram ===== | ||
| {{: | {{: | ||
| + | |||
| + | %%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){ | ||
| + | | ||
| + | } | ||
| + | |||
| + | public Object next(){ | ||
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| + | |||
| + | public boolean hasNext(){ | ||
| + | | ||
| + | return false; | ||
| + | } else { | ||
| + | return true; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | public void remove(){ | ||
| + | | ||
| + | throw new IllegalStateException(" | ||
| + | } | ||
| + | | ||
| + | for(int i = position-1; i < (list.length-1); | ||
| + | | ||
| + | } | ||
| + | list[list.length-1] = null; | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||