[디자인 패턴] 역할사슬(Chain of Responsibility) 패턴
역할 사슬 패턴은 기본적으로 이벤트 처리에 대한 패턴이다.
이벤트를 보내는 객체와, 받아서 처리하는 객체들 간의 결합도를 없애기 위한 패턴이라 할 수 있다.
이 패턴은 이벤트의 수신과 처리 부분을 분리함으로써 결합도를 해소한다.
그리고 이벤트의 수신자는 이벤트 처리자에게 요청 정보와 함께 처리를 요청하면, 처리자는 그걸 처리하거나 다시 다른 처리자에게 요청을 떠넘긴다.
가령, 프린트 버튼과 Ok 버튼의 이벤트를 처리해야 한다고 치겠다.
인터페이스와, 요청 정보에 대한 객체가 있다.


그리고 이 두 클래스가 Ok와 Print 버튼에 대한 이벤트 수신을 담당한다.

그리고 저기선 DialogHandler라는 이벤트 처리자에게 행동을 떠넘긴다.
그리고 어플리케이션 핸들러는 다이얼로그보다 일반적인 요소므로, 여기선 말단이 된다.
이런식으로 역할사슬 패턴은 계층을 타고 내려가면서 연결고리에 존재하는 모든 핸들러에 요청을 계속 날린다.
요청을 받은 핸들러는 할일이 있으면 하는거고, 없으면 다시 또 떠넘기고.
역할사슬 패턴은 보통 수많은 이벤트를 연결고리로 삼아 내려가며 로직을 돌리기 때문에,
컴포지트 패턴과 함께 사용되는 경우가 잦다.
참조
헤드 퍼스트 디자인 패턴
GoF 디자인 패턴