15. 책임 연쇄 패턴(Chain of Responsibility Pattern)
여러 형식 개체들로 구성된 프로그램을 작성하다 보면 메시지를 보내는 곳에서 이를 받아 처리해야 할 개체의 위치를 파악하기가 어려운 경우가 발생합니다. 만약, 메시지를 받아 처리해야 할 개체들을 관리하는 집합체가 있거나 계층화되어 있다면 책임 연쇄 패턴을 통해 효과적으로 메시지를 전달할 수 있습니다.
책임 연쇄 패턴에서는 메시지 송신자는 이를 받아 처리해야 할 개체가 속한 집합체에 메시지를 전달하면 집합체 내에서 수신해야 할 개체에게 메시지를 전달하여 처리를 하게 하는 것입니다. 특정 개체에게 메시지가 전달되면 해당 메시지를 자신이 처리를 할 것인지를 판단을 하게 됩니다. 만약, 자신이 처리를 해야 한다면 이에 대한 처리를 하겠죠. 그리고, 해당 메시지를 처리를 해야 할 다른 개체가 존재할 수 있다면 이를 다음 개체에게 전달을 하게 됩니다. 경우에 따라서는 메시지를 변형하여 전달할 수도 있고 버릴 수도 있을 것입니다.
즉, 책임 연쇄 패턴에서는 메시지 송신부와 메시지 수신부를 분리되어 있을 때 효과적입니다. 송신부에서는 수신부에 전달하면 수신부에서 메시지를 전달받은 개체는 자신과 연관되는 다른 개체들에게 이 메시지를 전달을 하는 형태로 실제 처리할 개체까지 전달을 하는 것입니다. 실제, 윈도우즈 프로그램에서 메시지를 처리하는 내부 원리도 이와 흡사합니다.
2016/04/27 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 책임 연쇄 패턴(Chain of Responsibility Pattern) - 구현
'프로그래밍 기술 > Escort GoF의 디자인 패턴 C#' 카테고리의 다른 글
[소프트웨어 패턴 C#] 20. 메멘토 패턴 (Memento Pattern) (0) | 2016.04.17 |
---|---|
[소프트웨어 패턴 C#] 19. 중재자 패턴 (Mediator Pattern) (0) | 2016.04.17 |
[소프트웨어 설계 패턴 C#] 18. 반복자 패턴(Iterator Pattern) (0) | 2016.04.17 |
[소프트웨어 설계 패턴 C#] 17. 해석자 패턴 (Iterpreter Pattern) (0) | 2016.04.17 |
[소프트웨어 설계 패턴 C#] 16. 명령 패턴 (Command Pattern) (0) | 2016.04.17 |
[소프트웨어 설계 패턴 C#] 14. 프락시 패턴 (Proxy Pattern) - 보호용 프락시 (0) | 2016.04.17 |
[소프트웨어 설계 패턴 C#] 13. 프락시 패턴 (Proxy Pattern) - 가상 프락시 (0) | 2016.04.17 |
[소프트웨어 설계 패턴 C#] 12. 프락시 패턴(Proxy Pattern) - 원격지 프락시 (0) | 2016.04.17 |
[소프트웨어 설계 패턴 C#] 11. 플라이급 패턴(Flyweight Pattern) (0) | 2016.04.17 |
[C#] 퍼사드 패턴(Facade Pattern) (0) | 2016.04.07 |