본문 바로가기

Knowledge/Design Pattern

이터레이터 패턴 (Iterator Pattern)

이터레이터 패턴 (Iterator Pattern)


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

해주는 방법을 제공해준다.


》》 집합체내에서 어떤식으로 일이 처리되는지에 대해서 전혀 모르는 상태에서 그 안에 들어있는 모든 항목에 대해

    반복작업 수행 가능

》》 직접 Iterator 인터페이스를 만들 수도 있지만 자바에서는 Iterator 인터페이스를 제공한다.


이터레이터 패턴 예제

음악사이트를 이곳 저곳 사용하다보니 여러 사이트에 플레이리스트가 흩어져있다.

플레이리스트를 한 곳에 합쳐서 보고싶은데 어떻게 해야할까?

각각의 플레이리스트를 단순하게 합쳐서 출력하려다보니까 각각의 사이트는 노래를 저장하는 방식이 달랐다.

그러다보니 각각의 저장방식에 맞게 출력하려면 일일히 접근, 반복해서 출력해야했다.


이럴때 일일히 반복작업을 해주는 것을 캡슐화해주는 것을 이터레이터 패턴이라고 한다.

이렇게 캡슐화하면 어떠한 방식으로 저장이 되어있어도 반복자를 구현할 수 있다.




※ 디자인원칙클래스를 바꾸는 이유는 한가지뿐이어야 한다.


》》 코드를 변경할 만한 이유가 두 가지가 되면 그만큼 그 클래스를 나중에 고쳐야 할 가능성이 커지게 될 뿐만아니라

    두 가지에 관련된 부분에 동시에 영향이 미친다.

》》 디자인을 하는데 있어서 역할을 분리시키는것은 가장 어려운 것 중에 하나