Design Patterns - Iterator Pattern

다용도리모콘·2021년 4월 13일
0

Design Patterns

목록 보기
8/11

Iterator Pattern

컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접급할 수 있게 하는 패턴

code

public interface Iterator {
    boolean hasNext();
    Object next();
    void remove();
}

public class IteratorImpl implements Iterator {
    Item[] list;
    
    public IteratorImpl() {
    ...
    }
    
    public Object next() {
    ...
    }
    
    public boolean hasNext() {
    ...
    }
    
    public void remove() {
    ...
    }
}

Pros

내부적인 구현 방법을 외부로 노출시키지 않으면서 집합체에 있는 모든 항목에 일일이 접근할 수 있음.

Composite Pattern

객체들을 트리 구조로 구성하여 부분과 전체를 나타내는 계층 구조로 만든 패턴. 클라이언트에서 개별 객체와 복합객체를 똑같은 방법으로 다룰 수 있음.

Component and Composite

Composite는 Component의 구현체이면서 동시에 Component를 구성요소로 가질 수 있기 때문에 계층구조를 만들 수 있다.

Composite Iterator(Iterator in Composite Pattern)

Composite 안에 있는 모든 node에 대해 반복작업을 할 수 있게 해주는 Iterator.
재귀적으로 childNode의 Iterator에 접근.

NullIterator

아무일도 하지 않는 Iterator.

public class NullIterator implements Iterator {
    public Object next() {
        return null;
    }
    
    public boolean hasNext() {
        return false;
    }
    
    public void remove() {
        throw new Exception();
    }
}

0개의 댓글