strategy, template method, visitor
Post on 19-Jul-2015
91 Views
Preview:
TRANSCRIPT
Strategy,
Template Method,
Visitor
Content
Strategy
Template Method
Visitor
Summery
Strategy POLICY
Motivation & Available
동일계열의알고리즘을정의, 캡슐화, 상호교환
알고리즘의다양화
개념적으로비슷한알고리즘을캡슐화
알고리즘의변형가능성부여
캡슐화된데이터를사용
분기문대체
Structure & Distributor
Stratege를통해알고리즘호출
알고리즘인터페이스정의
구현된알고리즘들
Effect
동일계열알고리즘정의
서브클래싱의대안
Context를상속하지않고 Strategy를 상속
분기문제건
구현부를선택하여사용
사용자가 ConcreteStrategy를 알아야함
Context ↔ Strategy간오버헤드발생
Strategy 객체수증가
Flyweight 활용
Implement
Strategy, Context 인터페이스정의
Strategy::func(Context *)
Context::func(Strategy *)
Strategy를템플릿으로구현
Strategy에 선택성부여
Context에기본행동을구현한후필요에따라 Strategy를 사용할지선택
Template
Method알고리즘의구조를인터페이스화
Motivation & Available
알고리즘의변하지않는부분과변경가능한부분을분리
서브클래스들의공통연산을추출, 코드중복제거
서브클래스들의확장제어
Structure & Distributor
기본연산구현추가연산인터페이스정의
추가연산만구현
Effect
역전된제어구조
Abstract Concrete, 반대로는안됨
여러연산중하나를호출
구체연산
Abstract::구체연산
기본연산, hook 연산
팩토리메서드
사용자는각연산들의종류를알아야함
Implement
C++의접근제어이용
기본연산최소화
이름짓기
Visitor 멤버변수방문자
Motivation & Available
객체구성요소마다사용하는연산이다를때
객체구성요소에대한새로운연산을추가할때
객체구성요소에대한연산이너무많을때
Structure & Distributor
방문자인터페이스정의
실제방문자자체상태를가짐
Accept() 인터페이스정의
Accept() 인터페이스구현
그냥구조체거나컨테이너
Effect
새로운연산추가용이
관련연산을따로관리하고관련없는연산분리
ConcreteElement 추가가어려움
클래스계층구조에걸쳐방문
상태누적
정보은닉위배
Implement
이중디스패치
ConcreteElement, ConcreteVisitor에 따라연산이달라짐
객체구조순회책임
Element, Visitor, Iterator
Summery 아이제끝남ㅠㅠ
다양성의캡슐화
Strategy : 알고리즘캡슐화
State : 상태의존적인행동캡슐화
Mediator : 객체간프로토콜캡슐화
Iterator : 순회방법캡슐화
인자가되는객체
Visitor : Accept(Visitor *)
Command : Command(Receiver *), 다형성
Memento : Memento(State *), 非다형성
의사소통의캡슐화 vs 분산
Mediator
객체간흐름파악용이
Observer
Observer는 Subject의변화를선별적으로처리
메시지송/수신자분리
Command
SetReceiver()
Observer
Notify()
Mediator
Colleague간통신분리
디자인패턴에서기대할수있는점들
공통적인설계자들의어휘로쓰는패턴
설계내용보다패턴이름으로설계내용을이해시킴
시스템문서화와학습보조도구로쓰는패턴
주어진문제에대한일반적인해결방법제시
기존시스템설명을패턴으로요약
기존방법에대한보조역할로쓰는패턴
설계에맞게개발하는과정표준화
분석모델을실제구현에참조
디자인패턴에서기대할수있는점들
리팩토링을위한목표
프로토타이핑, 확장, 통합
top related