SlideShare a Scribd company logo
1 of 22
Proxy,
Chain of Responsibility,
Command
Structural & Behavioral Pattern
Content
• Proxy
• Summery (Structural pattern)
• Behavioral pattern
• Chain of responsibility
• Command
Proxy
Surrogate
다른 객체에 대한 대리 접근
Motive & Available
• 객체 생성에 비용이 많이 드는 경우
• 문서 편집기의 이미지 등
• 객체에 대한 정교한 접근자 제공
1. 원격지 프록시
2. 가상 프록시
3. 보호용 프록시
4. 스마트 참조자
Structure & Contributor
• 실제 객체에 접근하는 참조자 관리
• 실제 객체를 대체함
• 실제 객체의 생성 및 삭제
RealSubject, Proxy에
공통적인 인터페이스 정의
실제
객체임
Effect
• 실제 객체에 대한 추가적인 간접화 방법 제공
• 원격 프록시 : 저장 위치 은닉
• 가상 프록시 : 생성 시점 최적화
• 보호 프록시 : 엄격한 접근
• Copy-On-Write 기법
• 원본을 수정해야 하는 경우에만 복사 작업 진행
• 원본에 대한 reference count를 관리
Implement
• *, -> 연산자 오버로딩
• ex) Image  ImagePtr
• 프록시가 실제 객체를 알 필요는 없음
• 가상 프록시의 경우 실제 객체에 접근할 때에만 실제 객체 필요
• 실제 객체의 식별자 부여
Summery
Structural Pattern
Adapter vs Bridge
• Adapter는 인터페이스 불일치 해소가 목적
• Bridge는 구현을 분리하고 인터페이스를 통일하는 것이 목적
• 개발 시점 차이
• 설계 이전 : Bridge
• 설계 이후 : Adapter
• Facade?
• 인터페이스를 일치시키는것이 아님  새로운 인터페이스 작성
Composite, Decorator, Proxy
• Composite, Decorator는 재귀적 합성 사용, 서로 다른 목적
• Decorator : 상속 없이 기능 추가
• Composite : 객체 집합에 대한 일괄 제어
• 상호 보완 작용
• Composite  Leaf : Decorator
• Decorator  ConcreteComponent : Component
• Proxy? Decorator?
• 객체에 대한 동일한 인터페이스 제공
• Proxy는 참조자 관리
Behavioral pattern
행동 클래스 패턴
행동 객체 패턴
Behavioral pattern
• 행동 클래스 패턴
• Template method
• Interpreter
• 행동 객체 패턴
• Chain of responsibility
• Command
• Iterator
• Observer
• State
• Strategy
• Visitor
• Mediator
• Memento
Chain of responsibility
메시지 송신/수신 객체 분리
Motive & Available
• 메시지 송신 측과 수신 측 분리
• 송신/수신 객체가 여럿일 때
• 여러 수신자를 순회하되 수신자를 확정할 수 있을 때
• 익명 처리
• 수신자 집합이 동적으로 구성될 때
Structure & Contributor
처리자 인터페이스 정의
후속 처리자 연결
메시지 처리
실패 시 후속 처리자에게 요청
Effect
• 객체 간 행동적 결합도를 낮춤
• 동적으로 처리자 연결
• 메시지가 버려질 수 있음
Implement
• 후속 처리자 연결 고리 구현
• 새롭게 연결 고리 구현 / 덧붙이기
• 추가 연결 정보 구현
• 후속 처리자 연결
• 처리 요청의 표현부 정의
• 요청 내용의 클래스화
• 요청에 대한 식별자 정의
Command
↓↘→↘↓↙← + P
Motive & Available
• 요청을 캡슐화
• 요청에 대한 인터페이스 통일, 순차 실행 등
• 수행할 동작을 매개변수화(Callback)
• 특정 요청의 예약 실행
• 실행 취소 & 로깅
Structure & Contributor
연산 수행에 필요한
인터페이스
receiver와 연결
요청자
수신자
Effect
• 연산을 호출하는 측과 연산의 주체를 분리
• Command를 상속하여 조작하거나 확장
• 여러 Command를 묶어서 복합 Command를 구현
• Command의 추가 용이
Implement
• 명령이 얼마나 지능적이어야 할까?
• 요청자 ↔ 수신자 간 연결 기능 지원 / 독립 실행
• 취소 / 반복 연산 지원 여부
• 수신 객체, 매개변수 및 이전 상태
• 취소 연산의 정확성 보장
• 취소 후 상태 검사
• 상황에 맞는 Command 사용
• 는 template를 사용

More Related Content

Viewers also liked

Design patterns 스터디 -Decorator 패턴
Design patterns 스터디 -Decorator 패턴Design patterns 스터디 -Decorator 패턴
Design patterns 스터디 -Decorator 패턴Hyunho-Cho
 
Composite pattern
Composite patternComposite pattern
Composite pattern경 송
 
Decorator pattern
Decorator patternDecorator pattern
Decorator patternkidoki
 
M5 6 1
M5 6 1M5 6 1
M5 6 1nexthw
 
Composite pattern
Composite patternComposite pattern
Composite patternkidoki
 
Design pattern 4
Design pattern 4Design pattern 4
Design pattern 4Daniel Lim
 
Oop design principle
Oop design principleOop design principle
Oop design principleRyan Park
 
파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229Yong Joon Moon
 
예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법hyun soomyung
 
게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴예림 임
 
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴Terry Cho
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐Terry Cho
 
Fiddler: 웹 디버깅 프록시
Fiddler: 웹 디버깅 프록시Fiddler: 웹 디버깅 프록시
Fiddler: 웹 디버깅 프록시Taegon Kim
 

Viewers also liked (14)

Design patterns 스터디 -Decorator 패턴
Design patterns 스터디 -Decorator 패턴Design patterns 스터디 -Decorator 패턴
Design patterns 스터디 -Decorator 패턴
 
Composite pattern
Composite patternComposite pattern
Composite pattern
 
Decorator pattern
Decorator patternDecorator pattern
Decorator pattern
 
M5 6 1
M5 6 1M5 6 1
M5 6 1
 
Composite Pattern
Composite PatternComposite Pattern
Composite Pattern
 
Composite pattern
Composite patternComposite pattern
Composite pattern
 
Design pattern 4
Design pattern 4Design pattern 4
Design pattern 4
 
Oop design principle
Oop design principleOop design principle
Oop design principle
 
파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229
 
예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법
 
게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴
 
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
 
Fiddler: 웹 디버깅 프록시
Fiddler: 웹 디버깅 프록시Fiddler: 웹 디버깅 프록시
Fiddler: 웹 디버깅 프록시
 

Similar to Proxy, chain of responsibility, command pattern

Android Network
Android NetworkAndroid Network
Android Networkcooddy
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?VMware Tanzu Korea
 
데이터 바인딩 ( Binding )
데이터 바인딩 ( Binding )데이터 바인딩 ( Binding )
데이터 바인딩 ( Binding )대열 김
 
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기Gyuwon Yi
 
More effective c++ 3주차
More effective c++ 3주차More effective c++ 3주차
More effective c++ 3주차Injae Lee
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)DK Lee
 
GS Neotek aws_Amazon_CloudFrontDay2018_session4
GS Neotek aws_Amazon_CloudFrontDay2018_session4GS Neotek aws_Amazon_CloudFrontDay2018_session4
GS Neotek aws_Amazon_CloudFrontDay2018_session4GS Neotek
 
Restful web service
Restful web serviceRestful web service
Restful web servicesunguen lee
 
Java script 기본과 jquery의 활용
Java script 기본과 jquery의 활용Java script 기본과 jquery의 활용
Java script 기본과 jquery의 활용정기 김
 
객체지향 프로그래밍 기본
객체지향 프로그래밍 기본객체지향 프로그래밍 기본
객체지향 프로그래밍 기본용호 최
 
REST with Spring
REST with SpringREST with Spring
REST with Spring강우 김
 
Introduction to Web Components
Introduction to Web ComponentsIntroduction to Web Components
Introduction to Web ComponentsEunYoung Kim
 
Java script 강의자료_ed13
Java script 강의자료_ed13Java script 강의자료_ed13
Java script 강의자료_ed13hungrok
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리Injae Lee
 
REST API 설계
REST API 설계REST API 설계
REST API 설계Terry Cho
 
Ruby on Rails와 함께 하는 애자일 웹 개발
Ruby on Rails와 함께 하는 애자일 웹 개발Ruby on Rails와 함께 하는 애자일 웹 개발
Ruby on Rails와 함께 하는 애자일 웹 개발Sukjoon Kim
 
PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지Yoonwhan Lee
 
대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. restTerry Cho
 

Similar to Proxy, chain of responsibility, command pattern (20)

Android Network
Android NetworkAndroid Network
Android Network
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
 
데이터 바인딩 ( Binding )
데이터 바인딩 ( Binding )데이터 바인딩 ( Binding )
데이터 바인딩 ( Binding )
 
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
 
More effective c++ 3주차
More effective c++ 3주차More effective c++ 3주차
More effective c++ 3주차
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
 
CouchDB - Introduction - Korean
CouchDB - Introduction - KoreanCouchDB - Introduction - Korean
CouchDB - Introduction - Korean
 
GS Neotek aws_Amazon_CloudFrontDay2018_session4
GS Neotek aws_Amazon_CloudFrontDay2018_session4GS Neotek aws_Amazon_CloudFrontDay2018_session4
GS Neotek aws_Amazon_CloudFrontDay2018_session4
 
Restful web service
Restful web serviceRestful web service
Restful web service
 
Java script 기본과 jquery의 활용
Java script 기본과 jquery의 활용Java script 기본과 jquery의 활용
Java script 기본과 jquery의 활용
 
객체지향 프로그래밍 기본
객체지향 프로그래밍 기본객체지향 프로그래밍 기본
객체지향 프로그래밍 기본
 
REST with Spring
REST with SpringREST with Spring
REST with Spring
 
Introduction to Web Components
Introduction to Web ComponentsIntroduction to Web Components
Introduction to Web Components
 
Java script 강의자료_ed13
Java script 강의자료_ed13Java script 강의자료_ed13
Java script 강의자료_ed13
 
Restful API guide
Restful API guideRestful API guide
Restful API guide
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
Ruby on Rails와 함께 하는 애자일 웹 개발
Ruby on Rails와 함께 하는 애자일 웹 개발Ruby on Rails와 함께 하는 애자일 웹 개발
Ruby on Rails와 함께 하는 애자일 웹 개발
 
PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지
 
대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest
 

Proxy, chain of responsibility, command pattern

  • 2. Content • Proxy • Summery (Structural pattern) • Behavioral pattern • Chain of responsibility • Command
  • 4. Motive & Available • 객체 생성에 비용이 많이 드는 경우 • 문서 편집기의 이미지 등 • 객체에 대한 정교한 접근자 제공 1. 원격지 프록시 2. 가상 프록시 3. 보호용 프록시 4. 스마트 참조자
  • 5. Structure & Contributor • 실제 객체에 접근하는 참조자 관리 • 실제 객체를 대체함 • 실제 객체의 생성 및 삭제 RealSubject, Proxy에 공통적인 인터페이스 정의 실제 객체임
  • 6. Effect • 실제 객체에 대한 추가적인 간접화 방법 제공 • 원격 프록시 : 저장 위치 은닉 • 가상 프록시 : 생성 시점 최적화 • 보호 프록시 : 엄격한 접근 • Copy-On-Write 기법 • 원본을 수정해야 하는 경우에만 복사 작업 진행 • 원본에 대한 reference count를 관리
  • 7. Implement • *, -> 연산자 오버로딩 • ex) Image  ImagePtr • 프록시가 실제 객체를 알 필요는 없음 • 가상 프록시의 경우 실제 객체에 접근할 때에만 실제 객체 필요 • 실제 객체의 식별자 부여
  • 9. Adapter vs Bridge • Adapter는 인터페이스 불일치 해소가 목적 • Bridge는 구현을 분리하고 인터페이스를 통일하는 것이 목적 • 개발 시점 차이 • 설계 이전 : Bridge • 설계 이후 : Adapter • Facade? • 인터페이스를 일치시키는것이 아님  새로운 인터페이스 작성
  • 10. Composite, Decorator, Proxy • Composite, Decorator는 재귀적 합성 사용, 서로 다른 목적 • Decorator : 상속 없이 기능 추가 • Composite : 객체 집합에 대한 일괄 제어 • 상호 보완 작용 • Composite  Leaf : Decorator • Decorator  ConcreteComponent : Component • Proxy? Decorator? • 객체에 대한 동일한 인터페이스 제공 • Proxy는 참조자 관리
  • 11. Behavioral pattern 행동 클래스 패턴 행동 객체 패턴
  • 12. Behavioral pattern • 행동 클래스 패턴 • Template method • Interpreter • 행동 객체 패턴 • Chain of responsibility • Command • Iterator • Observer • State • Strategy • Visitor • Mediator • Memento
  • 13. Chain of responsibility 메시지 송신/수신 객체 분리
  • 14. Motive & Available • 메시지 송신 측과 수신 측 분리 • 송신/수신 객체가 여럿일 때 • 여러 수신자를 순회하되 수신자를 확정할 수 있을 때 • 익명 처리 • 수신자 집합이 동적으로 구성될 때
  • 15. Structure & Contributor 처리자 인터페이스 정의 후속 처리자 연결 메시지 처리 실패 시 후속 처리자에게 요청
  • 16. Effect • 객체 간 행동적 결합도를 낮춤 • 동적으로 처리자 연결 • 메시지가 버려질 수 있음
  • 17. Implement • 후속 처리자 연결 고리 구현 • 새롭게 연결 고리 구현 / 덧붙이기 • 추가 연결 정보 구현 • 후속 처리자 연결 • 처리 요청의 표현부 정의 • 요청 내용의 클래스화 • 요청에 대한 식별자 정의
  • 19. Motive & Available • 요청을 캡슐화 • 요청에 대한 인터페이스 통일, 순차 실행 등 • 수행할 동작을 매개변수화(Callback) • 특정 요청의 예약 실행 • 실행 취소 & 로깅
  • 20. Structure & Contributor 연산 수행에 필요한 인터페이스 receiver와 연결 요청자 수신자
  • 21. Effect • 연산을 호출하는 측과 연산의 주체를 분리 • Command를 상속하여 조작하거나 확장 • 여러 Command를 묶어서 복합 Command를 구현 • Command의 추가 용이
  • 22. Implement • 명령이 얼마나 지능적이어야 할까? • 요청자 ↔ 수신자 간 연결 기능 지원 / 독립 실행 • 취소 / 반복 연산 지원 여부 • 수신 객체, 매개변수 및 이전 상태 • 취소 연산의 정확성 보장 • 취소 후 상태 검사 • 상황에 맞는 Command 사용 • 는 template를 사용