일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- FactoryMethod
- bfs
- c++
- 회전하는큐
- 디자인패턴
- 클래스다이어그램
- C
- 추상팩토리
- 빌더패턴
- ps
- 옵저버
- 구조패턴
- AbstractFactory
- 완전탐색
- 팩토리메소드
- 데코레이터패턴
- UML
- 14500
- 백준
- 행위패턴
- 다이어그램
- problemsolving
- C언어
- 이터레이터
- 생성패턴
- 재귀
- 반복자
- 어댑터패턴
- 테트로미노
- 알고리즘
- Today
- Total
salsa source
[디자인패턴]클래스다이어그램(2) 행위패턴 - 반복자, 관찰자, 전략 본문
행위패턴
객체들 간 행위 및 알고리즘 등과 관련된 패턴
응용 분야에 따라 행위가 다른 객체로 옮겨가거나 알고리즘이 대체되는 경우
클래스행위패턴 > Interpreter, Template
객체 행위패턴 > Chain of Resposibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy, Visitor
반복자패턴(Iterator Pattern/이터레이터 패턴)
- 내부 표현부를 노출하지 않고 어떤 객체에 속한 원소들을 순차적으로 접근할 수 있도록 하는 패턴.
비공개 순회를 통하여 원하는 데이터를 탐색 가능하다.
장점
- 찾으려는 대상의 클래스 구현에 의존하지 않는다
- 클래스의 재이용화를 촉진시킨다.
활용 예시
- java list, map, set, array 등 링크
관련패턴
* Composite패턴 : 종종 Composite의 재귀구조접근에 응용된다.
* Factory Method 패턴
참고 : https://daddycat.blogspot.kr/2011/05/iterator-pattern.html
관찰자패턴(Observer Pattern/옵저버패턴/감시자패턴)
객체 간 일대다 의존관계를 정의해두어, 어떤 객체가 상태가 변할 때 그 객체에 의존성을 가진 다른 객체들이 그 변화를 통지받고 자동으로 업데이트 될 수 있게 함.
상태 변경 시 옵저버 객체를 통해서 다른 객체들에게 알림
장점
- 옵저버-주제, 옵저버-옵저버 간 관계가 느슨함. 서로 미치는 영향이 적음
- 누군가 새로운 옵저버를 등록하거나 삭제되어도 알 필요 없음
- 주제 클래스의 변경 없이 상태변경 통지를 받을 옵저버 추가 가능
활용 예시
- 자바 이벤트 리스너(AWT, Swing 등의 UI객체들) 링크
관련 패턴
* Mediator패턴 : Mediator와 Colleague 역할이 통신할 때 옵저버패턴을 사용하는 경우가 있음
참고 : https://daddycat.blogspot.kr/2011/05/observer-pattern.html
전략패턴(Strategy Pattern/스트래티지패턴)
알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 한다.
알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘 변경 가능하다.
장점
- 상속으로 해결 불가능한 코드 중복이나 객체의 실시간 알고리즘 변경 시 유용
- Strategy 추상객체를 상속해서 신규 알고리즘 추가가 용이하다(확장성)
- 추후 알고리즘 변경 시 해당 알고리즘만 수정하면 된다(클라이언트와 독립적으로 변경)
활용 예시
- 자바 comparator, 웹 프로그래밍 servelet 링크
관련 패턴 : 플라이웨이트패턴, 추상팩토리패턴, 상태패턴
참고 : https://daddycat.blogspot.kr/2011/05/strategy-pattern.html
'STUDY > 디자인패턴' 카테고리의 다른 글
[디자인패턴]클래스다이어그램(3) 구조패턴 - 데코레이터, 어댑터 (0) | 2018.04.02 |
---|---|
[디자인패턴]클래스다이어그램(1) 생성패턴 - 빌더, 추상팩토리, 팩토리메소드, 싱글톤 (0) | 2018.04.02 |
[디자인패턴] Observer패턴 (0) | 2018.02.08 |
[디자인패턴]소개 및 Iterator 패턴 (0) | 2018.02.07 |