티스토리 뷰

생성패턴 (Creational Pattern) 구조패턴 (Structural Pattern) 행위패턴 (Behavioral Pattern)
- 추상 팩토리 (Abstract Factory)
- 팩토리 메소드 (Factory Method)
- 프로토타입 (Prototype)
- 빌더 (Builder)
- 싱글톤 (Singleton)
- 어댑터 (Adapter)
- 컴포지트 (Composite)
- 브리지 (Bridge)
- 데코레이터 (Decorator)
- 플라이웨이트 (Flyweight) 
- 프록시 (Proxy)
- 퍼사드 (Facade)
- 책임 연쇄 (Chain of Responsibility)
- 커맨드 (Command)
- 인터프리터 (Interpreter)
- 이터레이터 (Iterator) 
- 미디에이터 (Mediator)
- 비지터 (Visitor)
- 템플릿 메소드 (Template Method)
- 스테이트 (State)
- 옵저버 (Observer)
- 메멘토 (Memento)
행위패턴 (Behavioral Pattern)
> 객체나 클래스 사이의 상호작용 방법이나 책임 분배 방법을 정의하는 패턴
> 객체 사이의 결합도 최소화에 중점
Iterator 패턴?
  • 컬렉션 구현 방법을 숨길 수 있음
  • 컬렉션 내 모든 항목 접근 가능

 

Iterator 패턴 구조

 

  • Aggregate : Iterator 역할을 만들어내는 인터페이스 정의
  • Iterator : 요소를 순서대로 검색해가는 인터페이스 정의
  • ConcreteAggregate : Aggregate가 정의한 인터페이스를 구현
  • ConcreteIterator : Iterator가 정의한 인터페이스를 구현

 

Iterator 패턴이 필요한 상황

 

        int[] arr = {1,2,3,4,5};
        List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());
        
        for(int i = 0; i < arr.length; i++) { System.out.println(arr[i]); }
        
        for(int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); }
  • 다른 자료구조(위의 예제로는 배열, 리스트)를 하나씩 조회해보고 싶으면 각자 다른 루프를 돌려야 함
  • 이터레이터 패턴을 적용하면 반복되는 자료구조는 다형적으로 사용 가능

 

적용 예제

- 치킨 메뉴와 피자 메뉴를 하나씩 확인하는 예제

https://github.com/jjjayyy/Design_Pattern_Sample_With_Springboot

 

GitHub - jjjayyy/Design_Pattern_Sample_With_Springboot

Contribute to jjjayyy/Design_Pattern_Sample_With_Springboot development by creating an account on GitHub.

github.com

댓글