2016년 2월 18일 목요일

디자인패턴...Delegation 편

Delegation (위임)
   : 합성을 상속만큼 강력하게 만드는 방법.

장점
   - Runtime에 행동의 복합을 가능하게 하고, 복합하는 방식도 변경해 준다.

단점
   - Runtime이므로 동적이다.
   - 고도로 매개변수화되어 있으므로 정적인 구조보다 이해하기가 어렵다.


Delegation이 사용되는 디자인 패턴들
전적으로 Delegation사용
   - Mediator (중재자)
     : 객체 간의 교류를 중재하는 객체를 도입하여 중재자 객체가 다른 객체로 연산을 전달하도록 구현, 연산에 자신의 참조자를 함께 보내고 위임받은 객체가 다시 자신에게 메세지를 보내서 자신이 정의한 데이터를 얻어가게 함

   - Chain of Responsibility (책임 연쇄)
     : 한 객체에서 다른 객체로 고리를 따라서 요청의 처리를 계속 위임
     요청을 처음 받은 원본 객체에 대한 참조자를 포함

   - Bridge (가교)
     : 구현과 추상적 개념을 분리하는 패턴
     추상화와 특정 구현을 대응시키고 추상화는 단순히 자신의 연산을 구현에 전달

부분적으로 Delegation사용
   - State (상태)
     : 객체는 현재 상태를 표현하는 상태 객체에 요청의 처리를 위임

   - Strategy (전략)
     : 객체는 요청을 수행하는 추상화한 전략 객체에게 특정 요청을 위임

   - Visitor (방문자)
     : 객체 구조의 각 요소에 수행하는 연산은 언제나 방문자 객체에게 위임된 연산


결론
   : Delegation은 객체 합성의 극단적인 예로서, 고도로 표준화된 패턴에서 사용하는 것이 최상이다.



참조문헌
- GoF의 디자인패턴

댓글 없음:

댓글 쓰기