9. 장식자 패턴(Decorator Pattern) 설계

9. 3 디자인

장식자 패턴을 설명하기 위한 예제 프로그램은 사진을 바로잡는 데모로 하겠습니다. 예제 프로그램에는 보정 대상인 사진과 보정기, 색조 보정기, 명도 보정기, 채도 보정기, 다중 보정기로 구성됩니다.

보정기의 사진을 수정하는 기능을 약속한 IChange 인터페이스를 약속합시다. 그리고 보정기는 IChange를 기반으로 ToneCompensator(색조 보정기), BrightnessCompensator(명도 보정기), SaturationCompensator(채도 보정기), MultiCompensator(다중 보정기)를 만들게요. 색조 보정기와 명도 보정기, 채도 보정기는 단위 기능을 수행하는 개체입니다. 그리고 다중 보정기는 IChange 인터페이스 기반의 보정기 개체를 멤버로 포함할 수 컬렉션이며 수정을 요청하면 컬렉션에 보관된 보정기를 이용하여 사진을 수정합니다. 장식자 패턴에서 다중 보정기 같은 역할을 하는 개체를 장식자라고 부릅니다.

[그림] 장식자 패턴 클래스 다이어그램
[그림] 장식자 패턴 클래스 다이어그램