티스토리 뷰
생성패턴 (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
'JAVA > 디자인패턴' 카테고리의 다른 글
[디자인패턴] 어댑터 (Adapter Pattern) (0) | 2022.05.03 |
---|---|
[디자인패턴] 싱글톤 (Singleton Pattern) (0) | 2022.03.25 |
[디자인패턴] 퍼사드 (Facade Pattern) (0) | 2022.03.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 예매 알림
- AWS
- 노션트렐로광고X
- Spring
- 기능개발
- codility
- 스프링 부트
- 완주하지 못한 선수
- 124 나라의 숫자
- 알고리즘
- FrogJmp
- 맵 api
- 문자열 내 마음대로 정렬하기
- 파이팅코리아
- cgv
- 카카오인턴
- 타겟 넘버
- 다음 맵 api
- API
- 쇠막대기
- 프로그래머스
- 안드로이드 스튜디오
- K번째수
- 자바
- 더 나은 내일
- 최솟값
- json
- 객체지향과 디자인패턴
- 텔레그램
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함