와챠의 우당탕탕 코딩 일기장

[JAVA 디자인 패턴] - 1, Iterator 패턴 본문

코딩 일기장/JAVA 디자인 패턴

[JAVA 디자인 패턴] - 1, Iterator 패턴

minWachya 2020. 9. 13. 19:16
반응형

Iterator Pattern

 

Iterator 패턴은 for 문의 i 같은 느낌이다.

여러 원소들이 들어있는 배열에서 한 원소씩 (통일된 방법으로) 차례대로 선택하는 데에 사용한다.

 

아래 예제는 독서실에 들어간 사람의 이름, 번호, 입장 시간을 차례대로 표시하는 프로그램이다.

예제로 뭘 할까 생각하는데 코로나라서 이런 명부를 적는 것이 생각나서 만들어보았다.

 

 

예제 프로그램의 클래스 다이어그램

  • Aggregate = 독서실 집합체
  • Iterator = 하나씩 차례로 선택하는 Iterator의 집합체
  • StuydingRoom = 독서실
  • StudyingRoomIterator = 독서실에 있는 사람들을 한명씩 차례로 선택하는 Iterator
  • Person = 사람

 

 

 

실행 결과

 

여기서 주목해야할 점은 Main 클래스의 이 부분이다.

 

이 부분은 아래처럼 for 문으로도 충분히 표현할 수 있다.

 

그러면 굳이 Iterator 패턴을 쓰는 이유는 무엇일까?

  1. 클라이언트(Main)들과 독서실이 잘 분리되어 있다.

    • 독서실 클래스 내부가 바뀌어도 클라이언트(Main)는 영향을 덜 받는다.
    • (ex - getPeopleAt()을 getPeopleNumber()으로 수정하는 경우)
  2. 클라이언트가 집합체에 접근하는 방법이 통일된다.

    • iterator의 hasNext(), next()를 이용
  3. 여러 종류의 Iterator를 만들 수 있다.

    • 맨 뒷사람부터 차례대로 선택하는 iterator

 

 

 

JAVA 언어로 배우는 디자인 패턴 입문(p 40~53) 참고


학교에서 디자인 패턴을 배우는데 패턴 기억해두면 좋을 것 같아서

(전에 토이 프로젝트할 때 암것도 모르고 구상하다가 막막해진 경험이... 존재했기 ㄸㅐ문에)

배울 때마다 예제 만들어 보면서 정리하려고 한다~

반응형
Comments