목적
여러 요소들을 담고 있는 객체이 내부 구조에 대한 이해 없이
각 요소를 순서대로 접근하고 사용할 수 있도록 방법을 제공
요소
문제: 자료 구조 클래스의 요소를 한 개씩 접근하는 API가 서로 다름
해결: 반복자 객체를 중간에 넣음
결과: 변경 최소화
구현
- iterator(): 반복자에 대한 참조를 반환 (Iterator 자료형)
- hasNext(): 요소가 더 존재하는지 확인 (true / false)
- next(): 다음 요소 가져오기. Object를 반환하므로 변환해서 사용
// Iterator 사용
Iterator iter = cities.iterator();
while (iter.hasNext()){
String s = (String)iter.next();
System.out.println(s);
}
for(Iterator iter = cities.iterator(); iter.hasNext();){
String s = (String)iter.next();
System.out.println(s);
}
임의의 aggregate IntDynamicArray의 iterator 구현
// 자료를 담는 클래스 Concrete Aggregate
public class IntDynamicArray implements Iterable {
...
public Iterator iterator() {
return new IntDynamicArrayIterator(this);
}
}
// IntDynamicArray의 Iterator 구현
public class IntDynamicArrayIterator implements Iterator {
IntDynamicArray arr;
int count;
public IntDynamicArrayIterator(IntDynamicArray arr) {
this.arr = arr;
count = 0;
}
@Override
public boolean hasNext() {
return count < arr.size();
}
@Override
public Object next() {
Integer n = arr.get(count);
count++;
return n;
}
}
'컴퓨터과학 > 디자인패턴' 카테고리의 다른 글
[디자인패턴] 어댑터 패턴 (Adapter Pattern) (0) | 2021.12.05 |
---|---|
[디자인패턴] DAO 패턴 (0) | 2021.12.04 |
[디자인패턴] 싱글턴 패턴 (Singleton Pattern) (0) | 2021.10.18 |
[디자인패턴] 팩토리 패턴 (Factory Pattern) (0) | 2021.10.18 |
[디자인패턴] 데코레이터 패턴 (Decorator Pattern) (0) | 2021.10.14 |
댓글