= Iterator Pattern = 집합체의 요소들을 동일한 방법으로, 순서대로 처리. {{tag>Architecture Modeling Design_Pattern Behavioral}} = 반복자(Iterator) API = public interface Iterator { boolean hasNext(); T next(); } public class ItemSequenceIterator implements Iterator { private ItemSquence concreteAggregate; private int index = 0; public ItemSequenceIterator(ItemSquence concreteAggregate) { this.concreteAggregate = concreteAggregate; this.index = 0; } @Override public boolean hasNext() { return index < concreteAggregate.length(); } @Override public T next() { T item = concreteAggregate.get(index); index++; return item; } } = 반복할 집합체(Aggregate) = public interface Aggregate { Iterator iterator(); } /* 간단한 ArrayList를 구현한 형태 */ public class ItemSquence implements Aggregate { private T[] items; private int last = 0; public ItemSquence(int capacity) { this.items = (T[]) new Object[capacity]; } public T get(int index) { return items[index]; } public void add(T item) { this.items[last] = item; last++; } public int length() { return last; } @Override public Iterator iterator() { return new ItemSequenceIterator(this); } } = Client = public class Main { public static void main(String[] args) { ItemSquence itemContainer = new ItemSquence<>(2); itemContainer.add(new Item("Item1")); itemContainer.add(new Item("Item2")); Iterator it = itemContainer.iterator(); while(it.hasNext()) { Item item = it.next(); System.out.println(item.getStr()); } } } /* 출력 */ //Item1 //Item2