9. 장식자 패턴(Decorator Pattern) 구현

. 4 구현

  장식자 패턴의 예제 프로그램은 Picture, IChange, 보정기, 데모 순으로 구현할게요.

 

9.4.1 Picture

Picture 클래스는 장식자 패턴에 포함되는 형식은 아닙니다. 단순히 예제 프로그램을 위해 정의한 형식으로 멤버 필드로 색조, 명도, 채도 값을 갖고 있고 이들 값을 변경하는 메서드와 보여주는 메서드를 갖도록 구현합시다. 

▶ Picture.cs


9.4.2 IChange
 

IChange는 사진을 수정하는 기능을 약속한 인터페이스입니다. 

▶ IChange.cs

 

9.4.3 보정기

먼저, 단위 보정을 할 수 있는 색조 보정기, 명도 보정기, 채도 보정기를 구현해 봅시다. 각각의 단위 보정기는 IChange를 기반으로 정의하며 약속된 사진을 수정하는 기능을 구현해야 합니다. 

▶ ToneCompensator.cs

▶ BrightnessCompensator.cs

▶ SaturationCompensator.cs 

 장식자인 다중 보정기는 단위 보정기를 추가하는 기능을 제공할게요. 그리고 사진을 바로잡는 기능은 내부에 포함된 보정기 개체를 이용하여 구현하면 됩니다.  

▶ MultiCompensator.cs


9.4.4
데모 코드 

데모 코드에서는 장식자인 MultiCompensator 개체를 생성하고 변환 대상인 Picture 개체를 먼저 생성할게요. 그리고 단위 기능 보정기들을 생성하여 MultiCompensator 개체에 포함시킨 후에 사진 수정 기능을 수행합니다. 그리고 수정 후의 사진 정보를 표시할게요. 

▶ Program.cs

▶ 실행 결과