책임 연쇄 패턴(Chain of Responsibility) 개념 메시지를 보낸 객체와 이를 받아 처리하는 객체 간의 결합도를 없애기 위한 패턴이다. 요청을 처리할 수 있는 객체를 여러 만들고, 요청을 송신하는 객체와 그 요청을 수신하여 처리하는 객체 사이의 결합을 피하는 패턴이다. 그리고 요청을 수신할 수 있는 객체를 연쇄적으로 묶고, 실제 요청을 처리하는 객체를 만날 때까지 고리를 따라 요청을 전달한다. 말이 좀 어려운데.. 이렇게 생각하면 알기 쉽다. 이 해동 패턴은 누군가에게 책임을 떠 넘기는 일이다. 예를 들어, 복리 후생에 관련된 문의가 있어서, 인사과 개똥이 과장에게 문의한다. 개통이 과장이 알면 답변할 것이고, 아니면 멍멍이 과장에게 문의하라고 할 것이다. 그럼 또 마찬가지로 멍멍이 과장에게 문의하면 그는 답변을 하던지 혹은 다른 이에게 문의하라고 할 것이다. 그리고 이 반복은 문의가 완료될 때까지 반복된다. 적용 사례 프로그래밍 관점에서 한번 보자. 어플리케이션이 있고, 그 속에 다이어로그 창이 있다. 그리고 그 창에는 버튼이 있다고 치자. 그리고 모든 컴포넌트에는 도움말 처리 기능이 있다고 하자. 클래스 구성요소와 종속성은 아래와 같다. 다음은 예제 코드이다. 1 Application* application = new Application(message); 2 Dialog* dialog = new Dialog(application, "다이어로그 도움말"); 3 Button* btn = new Button(dialog, "버튼 도움말"); 이 경우, 버튼에서 도움말 요청을 하면, 버튼 도움말이 표시될 것 이다(3번 행에서 설정되어 있으니깐). 하지만, 도움말이 설정되어 있지 않는다면, successor인 다이어로그의 도움말이 처리된다. 장단점 장점 1. 객체 간의 행동 결합도가 현저히 낮아진다. 즉, 객체들 간의 상호 작용 과정을 단순...