SlideShare a Scribd company logo
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간 통신 분리
디자인 패턴에서 기대할 수 있는 점들
 공통적인 설계자들의 어휘로 쓰는 패턴
 설계 내용보다 패턴 이름으로 설계 내용을 이해시킴
 시스템 문서화와 학습 보조도구로 쓰는 패턴
 주어진 문제에 대한 일반적인 해결 방법 제시
 기존 시스템 설명을 패턴으로 요약
 기존 방법에 대한 보조 역할로 쓰는 패턴
 설계에 맞게 개발하는 과정 표준화
 분석 모델을 실제 구현에 참조
디자인 패턴에서 기대할 수 있는 점들
 리팩토링을 위한 목표
 프로토타이핑, 확장, 통합

More Related Content

Viewers also liked

기업 커뮤니케이터의 입장에서 바라본 인포그래픽 개요 And 활용 tips
기업 커뮤니케이터의 입장에서 바라본 인포그래픽 개요 And 활용 tips기업 커뮤니케이터의 입장에서 바라본 인포그래픽 개요 And 활용 tips
기업 커뮤니케이터의 입장에서 바라본 인포그래픽 개요 And 활용 tips
준완 박
 
효과적인 미디어 서비스를 위한 Web/Mobile Backend 구성 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day
효과적인 미디어 서비스를 위한 Web/Mobile Backend 구성 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day효과적인 미디어 서비스를 위한 Web/Mobile Backend 구성 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day
효과적인 미디어 서비스를 위한 Web/Mobile Backend 구성 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day
Amazon Web Services Korea
 
Material design 3분 만에 살펴보기
Material design 3분 만에 살펴보기Material design 3분 만에 살펴보기
Material design 3분 만에 살펴보기
Doran Hwang
 
멋진기획서만들기 Visual planning_wording strategy_김택환
멋진기획서만들기 Visual planning_wording strategy_김택환멋진기획서만들기 Visual planning_wording strategy_김택환
멋진기획서만들기 Visual planning_wording strategy_김택환
takwhan kim
 
Amazon web service simple diagram overview
Amazon web service simple diagram overviewAmazon web service simple diagram overview
Amazon web service simple diagram overview
Juyeon Yu
 
스사모 테크톡 - GraphX
스사모 테크톡 - GraphX스사모 테크톡 - GraphX
스사모 테크톡 - GraphX
SangWoo Kim
 
CX Design Game 한글버전
CX Design Game 한글버전CX Design Game 한글버전
CX Design Game 한글버전
ROA Invention LAB Inc. CEO
 
[Info09]infographics01
[Info09]infographics01[Info09]infographics01
[Info09]infographics01
JY LEE
 
The Social Dynamics model: how to integrate social media in your company
The Social Dynamics model: how to integrate social media in your companyThe Social Dynamics model: how to integrate social media in your company
The Social Dynamics model: how to integrate social media in your company
Steven Van Belleghem
 
쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다
Jinho Jung
 
Design thinking 20150821_print
Design thinking 20150821_printDesign thinking 20150821_print
Design thinking 20150821_print
Sanghyeok Park
 
Nike ppt
Nike pptNike ppt
Nike ppt
성일 은
 
창발 업사이클링 최종과제
창발 업사이클링 최종과제창발 업사이클링 최종과제
창발 업사이클링 최종과제
po02117
 
'UX', 'UX Design' and 'Good UX'
'UX', 'UX Design' and 'Good UX''UX', 'UX Design' and 'Good UX'
'UX', 'UX Design' and 'Good UX'
Jinyong Kim
 
Mobile UX Design Essential
Mobile UX Design EssentialMobile UX Design Essential
Mobile UX Design Essential
Junsang Dong
 
Report : Android Simple Bug Catch Game(Korean)
Report : Android Simple Bug Catch Game(Korean)Report : Android Simple Bug Catch Game(Korean)
Report : Android Simple Bug Catch Game(Korean)
Matthew Chang
 
06. graph mining
06. graph mining06. graph mining
06. graph mining
Jeonghun Yoon
 
Types of company
Types of companyTypes of company
Types of companyjosealphin
 
[피키캐스트] 5학년선배 ppt 템플릿 레이아웃
[피키캐스트] 5학년선배 ppt 템플릿 레이아웃[피키캐스트] 5학년선배 ppt 템플릿 레이아웃
[피키캐스트] 5학년선배 ppt 템플릿 레이아웃
o_senior
 

Viewers also liked (20)

기업 커뮤니케이터의 입장에서 바라본 인포그래픽 개요 And 활용 tips
기업 커뮤니케이터의 입장에서 바라본 인포그래픽 개요 And 활용 tips기업 커뮤니케이터의 입장에서 바라본 인포그래픽 개요 And 활용 tips
기업 커뮤니케이터의 입장에서 바라본 인포그래픽 개요 And 활용 tips
 
Blue ocean strategy
Blue ocean strategyBlue ocean strategy
Blue ocean strategy
 
효과적인 미디어 서비스를 위한 Web/Mobile Backend 구성 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day
효과적인 미디어 서비스를 위한 Web/Mobile Backend 구성 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day효과적인 미디어 서비스를 위한 Web/Mobile Backend 구성 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day
효과적인 미디어 서비스를 위한 Web/Mobile Backend 구성 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day
 
Material design 3분 만에 살펴보기
Material design 3분 만에 살펴보기Material design 3분 만에 살펴보기
Material design 3분 만에 살펴보기
 
멋진기획서만들기 Visual planning_wording strategy_김택환
멋진기획서만들기 Visual planning_wording strategy_김택환멋진기획서만들기 Visual planning_wording strategy_김택환
멋진기획서만들기 Visual planning_wording strategy_김택환
 
Amazon web service simple diagram overview
Amazon web service simple diagram overviewAmazon web service simple diagram overview
Amazon web service simple diagram overview
 
스사모 테크톡 - GraphX
스사모 테크톡 - GraphX스사모 테크톡 - GraphX
스사모 테크톡 - GraphX
 
CX Design Game 한글버전
CX Design Game 한글버전CX Design Game 한글버전
CX Design Game 한글버전
 
[Info09]infographics01
[Info09]infographics01[Info09]infographics01
[Info09]infographics01
 
The Social Dynamics model: how to integrate social media in your company
The Social Dynamics model: how to integrate social media in your companyThe Social Dynamics model: how to integrate social media in your company
The Social Dynamics model: how to integrate social media in your company
 
쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다
 
Design thinking 20150821_print
Design thinking 20150821_printDesign thinking 20150821_print
Design thinking 20150821_print
 
Nike ppt
Nike pptNike ppt
Nike ppt
 
창발 업사이클링 최종과제
창발 업사이클링 최종과제창발 업사이클링 최종과제
창발 업사이클링 최종과제
 
'UX', 'UX Design' and 'Good UX'
'UX', 'UX Design' and 'Good UX''UX', 'UX Design' and 'Good UX'
'UX', 'UX Design' and 'Good UX'
 
Mobile UX Design Essential
Mobile UX Design EssentialMobile UX Design Essential
Mobile UX Design Essential
 
Report : Android Simple Bug Catch Game(Korean)
Report : Android Simple Bug Catch Game(Korean)Report : Android Simple Bug Catch Game(Korean)
Report : Android Simple Bug Catch Game(Korean)
 
06. graph mining
06. graph mining06. graph mining
06. graph mining
 
Types of company
Types of companyTypes of company
Types of company
 
[피키캐스트] 5학년선배 ppt 템플릿 레이아웃
[피키캐스트] 5학년선배 ppt 템플릿 레이아웃[피키캐스트] 5학년선배 ppt 템플릿 레이아웃
[피키캐스트] 5학년선배 ppt 템플릿 레이아웃
 

Similar to Strategy, template method, visitor

[스프링 스터디 3일차] @MVC
[스프링 스터디 3일차] @MVC[스프링 스터디 3일차] @MVC
[스프링 스터디 3일차] @MVC
AnselmKim
 
Builder, prototype, singleton pattern
Builder, prototype, singleton patternBuilder, prototype, singleton pattern
Builder, prototype, singleton pattern
YoonJong Choi
 
[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발
NAVER D2
 
Daejeon IT Developer Conference Struts2
Daejeon IT Developer Conference Struts2Daejeon IT Developer Conference Struts2
Daejeon IT Developer Conference Struts2
plusperson
 
Design patterns
Design patternsDesign patterns
Design patternsdf
 
스프링 3.0 RESTful & restTemplate
스프링 3.0  RESTful & restTemplate스프링 3.0  RESTful & restTemplate
스프링 3.0 RESTful & restTemplate
isyoon
 
도메인 주도 설계 - 6장 도메인 객체의 생명주기
도메인 주도 설계 - 6장 도메인 객체의 생명주기도메인 주도 설계 - 6장 도메인 객체의 생명주기
도메인 주도 설계 - 6장 도메인 객체의 생명주기
JangHyuk You
 
전달교육(분석설계모델링)
전달교육(분석설계모델링)전달교육(분석설계모델링)
전달교육(분석설계모델링)gimslide
 
Design Pattern Introduction
Design Pattern IntroductionDesign Pattern Introduction
Design Pattern Introduction
Bill Kim
 
DDD-07-Using The Language
DDD-07-Using The LanguageDDD-07-Using The Language
DDD-07-Using The LanguageKyungryul KIM
 
Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수
Park Jonggun
 
C:\fakepath\whole part pattern
C:\fakepath\whole part patternC:\fakepath\whole part pattern
C:\fakepath\whole part patternlee
 
Whole part pattern
Whole part patternWhole part pattern
Whole part patternlee
 
Whole part pattern
Whole part patternWhole part pattern
Whole part patternlee
 
Whole part pattern
Whole part patternWhole part pattern
Whole part patternlee
 
C:\Fakepath\Whole Part Pattern
C:\Fakepath\Whole Part PatternC:\Fakepath\Whole Part Pattern
C:\Fakepath\Whole Part Patternlee
 
Whole part pattern
Whole part patternWhole part pattern
Whole part patternlee
 
Refactoring tutorial
Refactoring tutorialRefactoring tutorial
Refactoring tutorial
Bingu Shim
 
HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.
Hojin Jun
 
디자인패턴 1~13
디자인패턴 1~13디자인패턴 1~13
디자인패턴 1~13
Shin heemin
 

Similar to Strategy, template method, visitor (20)

[스프링 스터디 3일차] @MVC
[스프링 스터디 3일차] @MVC[스프링 스터디 3일차] @MVC
[스프링 스터디 3일차] @MVC
 
Builder, prototype, singleton pattern
Builder, prototype, singleton patternBuilder, prototype, singleton pattern
Builder, prototype, singleton pattern
 
[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발
 
Daejeon IT Developer Conference Struts2
Daejeon IT Developer Conference Struts2Daejeon IT Developer Conference Struts2
Daejeon IT Developer Conference Struts2
 
Design patterns
Design patternsDesign patterns
Design patterns
 
스프링 3.0 RESTful & restTemplate
스프링 3.0  RESTful & restTemplate스프링 3.0  RESTful & restTemplate
스프링 3.0 RESTful & restTemplate
 
도메인 주도 설계 - 6장 도메인 객체의 생명주기
도메인 주도 설계 - 6장 도메인 객체의 생명주기도메인 주도 설계 - 6장 도메인 객체의 생명주기
도메인 주도 설계 - 6장 도메인 객체의 생명주기
 
전달교육(분석설계모델링)
전달교육(분석설계모델링)전달교육(분석설계모델링)
전달교육(분석설계모델링)
 
Design Pattern Introduction
Design Pattern IntroductionDesign Pattern Introduction
Design Pattern Introduction
 
DDD-07-Using The Language
DDD-07-Using The LanguageDDD-07-Using The Language
DDD-07-Using The Language
 
Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수
 
C:\fakepath\whole part pattern
C:\fakepath\whole part patternC:\fakepath\whole part pattern
C:\fakepath\whole part pattern
 
Whole part pattern
Whole part patternWhole part pattern
Whole part pattern
 
Whole part pattern
Whole part patternWhole part pattern
Whole part pattern
 
Whole part pattern
Whole part patternWhole part pattern
Whole part pattern
 
C:\Fakepath\Whole Part Pattern
C:\Fakepath\Whole Part PatternC:\Fakepath\Whole Part Pattern
C:\Fakepath\Whole Part Pattern
 
Whole part pattern
Whole part patternWhole part pattern
Whole part pattern
 
Refactoring tutorial
Refactoring tutorialRefactoring tutorial
Refactoring tutorial
 
HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.
 
디자인패턴 1~13
디자인패턴 1~13디자인패턴 1~13
디자인패턴 1~13
 

Strategy, template method, visitor

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