Iterator 패턴

mjdevv·2024년 1월 30일
0

디자인패턴

목록 보기
2/2

동일한 아이템들을 여러 개 묶음으로 가지고 있는 것. 아래와 같은 자료구조들을 Iterator란 공통된 인터페이스로 순회하기 위한 패턴이라고 볼 수 있다.

  • 배열
  • 링크드리스트
  • 트리
  • 그래프
  • 테이블 등

(그림이 좀 괴랄하긴 한데, mermaid가 처음이라 익숙해지면 다시 그려야 될 것 같다..)

여튼 위의 패턴을 분석해보면 아래와 같이 요약할 수 있다.

  1. ArrayAggregator 인터페이스를 구현한다.
  2. ArrayIteratorIterator 인터페이스를 구현한다.
  3. ItemArray 클래스의 부분으로 생명주기를 함께한다.
  4. ArrayIteratorArray를 소유한다.

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를 생성해서 리턴 해주는 메소드를 가지고 있다.


REFERNCE

[1] https://www.youtube.com/watch?v=T3sXKtlr0Ow&list=PLe6NQuuFBu7FhPfxkjDd2cWnTy2y_w_jZ

profile
방구석 언어기술자

0개의 댓글

관련 채용 정보