Chain of Responsiblity는 그대로 직역하자면 “책임 연쇄”가 된다. 하지만 이는 너무 직관적인 번역이라고 생각한다. 좀 더 고민해 보자면 “책임을 가지고 있는 연쇄” 정도가 될거고, 더 풀어보자면 “연쇄적 책임”이 되지 않을까 한다.
이 패턴은 조금은 특이하며 조금은 재귀적인 느낌을 준다. Client로 부터 요청을 받은 객체는 자신이 요청에 응답할 준비가 되어있지 않을 때 자신의 상위클래스로 수신한 요청을 전달한다. 이렇게 요청을 전달받은 상위 클래스는 요청에 대한 응답을 할 준비가 상위클래스 자신에게 되어있는지를 살펴보고 자신에게 준비가 되어있지 않다면 스스로에 대한 상위클래스로 요청을 다시 전달한다. 이렇게 요청을 계속 위로 전달해서 client의 요청에 적합한 준비가 된 클래스가 요청에 대한 행동을 진행한다. 이 방식의 단계에 대한 구조가 바로 Chain of Responsiblity 패턴이다.
Chain of Responsiblity 패턴이 성립하기 위해서는 가장 중요한 요건이 두가지가 있다. 하나는 요청을 받은 클래스의 전체 구조에서 요청에 대한 클래스(인스턴스)의 메서드는 동일한 인터페이스를 가지고 있어야 하며, 해당 요청을 처리하는 메서드 내부에서 ♣위줄♣의 객체로 요청을 전가하는 기본동작은 필요단계의 제일 위쪽에 있는 클래스에 선언되고, 그대로 아래쪽으로 상속되어야 한다는 점이다.
상위클래스에서 상속된 하위 클래스는 Client의 요청을 분석하고, 자신이 처리해야 할 필요가 있는 경우라면 메서드를 오버라이드 하면 된다. 그러면 요청의 내용에 따라 자신이 해야하는 처리가 있는 경우에 대한 동작만 새로 정의하면 된다. 이런 방식의 구현을 통해서 계층구조에서 작성되어야 하는 코드의 분량을 효율적으로 줄이고 관리의 용이성을 확보할 수 있다.