동일한 아이템들을 여러 개 묶음으로 가지고 있는 것. 아래와 같은 자료구조들을 Iterator란 공통된 인터페이스로 순회하기 위한 패턴이라고 볼 수 있다.
(그림이 좀 괴랄하긴 한데, mermaid
가 처음이라 익숙해지면 다시 그려야 될 것 같다..)
여튼 위의 패턴을 분석해보면 아래와 같이 요약할 수 있다.
Array
는 Aggregator
인터페이스를 구현한다.ArrayIterator
는 Iterator
인터페이스를 구현한다. Item
은 Array
클래스의 부분으로 생명주기를 함께한다. ArrayIterator
는 Array
를 소유한다. mermaid에서는 create을 표현하는 기능을 제공해주지 않지만, [1]의 유튜브 영상 내 클래스도에서는 Aggregator가 ArrayIterator를 create 해주는 표현이 있다.
그리고 해당 기호는 아래 함수로 구현된다.
public class Array Impelements Aggregator{
private Item[] items;//Array 클래스는 item을 HAS-A관계로 소유한다.
////... some codes ...////
@Override
public Iterator iterator(){//Aggregator는 Iterator를 create한다
return new ArrayIterator(this);
}
}
Array 클래스는 Iterator 인터페이스를 구현한 ArrayIterator를 생성해서 리턴 해주는 메소드를 가지고 있다.
[1] https://www.youtube.com/watch?v=T3sXKtlr0Ow&list=PLe6NQuuFBu7FhPfxkjDd2cWnTy2y_w_jZ