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는 참조자 관리
21. Effect
• 연산을 호출하는 측과 연산의 주체를 분리
• Command를 상속하여 조작하거나 확장
• 여러 Command를 묶어서 복합 Command를 구현
• Command의 추가 용이
22. Implement
• 명령이 얼마나 지능적이어야 할까?
• 요청자 ↔ 수신자 간 연결 기능 지원 / 독립 실행
• 취소 / 반복 연산 지원 여부
• 수신 객체, 매개변수 및 이전 상태
• 취소 연산의 정확성 보장
• 취소 후 상태 검사
• 상황에 맞는 Command 사용
• 는 template를 사용