15. 책임 연쇄 패턴(Chain of Responsibility Pattern) 설계

15. 3 디자인

 책임 연쇄 패턴에 대한 설명을 위한 예제 프로그램은 사진 보정에 관한 소재를 대상으로 하겠습니다.

 사용자와 상호작용을 하는 UIPart는 클라이언트 역할을 하며 사진을 보정하는 개체에게 보정 명령을 요청하는 주체입니다. 사진을 보정하는 개체들은 UIPart에서 전달된 명령을 처리하거나 연결된 다른 사진 보정 개체에게 전달하게 할 것입니다. 이를 위해 추상 클래스로 ChangeHandler를 정의하였고 보정 명령을 받아 수행할 수 있는 ChangeRequest 메서드에 대한 약속을 멤버로 정의하였습니다. 그리고, 다른 사진 보정 개체에게 전달된 명령을 전달할 수 있게 하였습니다. 예제 프로그램에서는 사진 보정 개체에 대한 구체화 된 형식으로 칼라를 흑백으로 변환하는 GrayChangeHandler와 적목 보정을 해 주는 RedEyeChangeHandler, 날카로운 부분을 부드럽게 보정해 주는 SoftChangeHandler를 구현할 것입니다.

 사진 보정 개체는 다른 사진 보정 개체를 알고 있게 하였고 UIPart에서 전달된 보정 명령은 하나의 사진 보정 개체에게만 내리더라도 연결된 체인을 통해 실제 보정 작업을 해야 하는 개체에게 전달이 되므로 클라이언트인 UIPart에서는 명령을 내리기 수월해 집니다.

책임 연쇄 패턴 클래스 다이어그램
[그림] 책임 연쇄 패턴 클래스 다이어그램