Delegation (위임)
: 합성을 상속만큼 강력하게 만드는 방법.
장점
- Runtime에 행동의 복합을 가능하게 하고, 복합하는 방식도 변경해 준다.
단점
- Runtime이므로 동적이다.
- 고도로 매개변수화되어 있으므로 정적인 구조보다 이해하기가 어렵다.
Delegation이 사용되는 디자인 패턴들
전적으로 Delegation사용
- Mediator (중재자)
: 객체 간의 교류를 중재하는 객체를 도입하여 중재자 객체가 다른 객체로 연산을 전달하도록 구현, 연산에 자신의 참조자를 함께 보내고 위임받은 객체가 다시 자신에게 메세지를 보내서 자신이 정의한 데이터를 얻어가게 함
- Chain of Responsibility (책임 연쇄)
: 한 객체에서 다른 객체로 고리를 따라서 요청의 처리를 계속 위임
요청을 처음 받은 원본 객체에 대한 참조자를 포함
- Bridge (가교)
: 구현과 추상적 개념을 분리하는 패턴
추상화와 특정 구현을 대응시키고 추상화는 단순히 자신의 연산을 구현에 전달
부분적으로 Delegation사용
- State (상태)
: 객체는 현재 상태를 표현하는 상태 객체에 요청의 처리를 위임
- Strategy (전략)
: 객체는 요청을 수행하는 추상화한 전략 객체에게 특정 요청을 위임
- Visitor (방문자)
: 객체 구조의 각 요소에 수행하는 연산은 언제나 방문자 객체에게 위임된 연산
결론
: Delegation은 객체 합성의 극단적인 예로서, 고도로 표준화된 패턴에서 사용하는 것이 최상이다.
참조문헌
- GoF의 디자인패턴
댓글 없음:
댓글 쓰기