strategy, template method, visitor

Post on 19-Jul-2015

91 Views

Category:

Software

5 Downloads

Preview:

Click to see full reader

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