프로그래밍 기술/Escort GoF의 디자인 패턴 C#

[C#] 장식자 패턴(Decorator Pattern)

언제나휴일 2016. 4. 7. 17:31
반응형

9. 장식자 패턴(Decorator Pattern)

 

 프로그래밍하다 보면 너무 다양한 형태로 기능을 확장해야 할 경우가 발생합니다. 예를 들면 여러 종류의 단위 기능이 있고 이들을 조합해서 사용할 경우입니다. 사진에 원 장식을 하고 여기에 사각형 장식을 하고 여기에 삼각형 장식을 하는 등의 작업을 반복할 수 있는 경우처럼 말이죠. 이 같은 경우에 단위 기능들에 대한 조합된 기능을 수행할 수 있는 개체 형식들을 정의하기 위해서는 무수히 많은 수의 파생 클래스를 정의해야 합니다. 이때 장식자 패턴을 사용하면 장식자 개체에서 필요한 단위 기능을 하는 형식 개체를 포함을 시키는 것으로 이를 해결할 수 있습니다.

 

 이 같은 경우에 장식자 패턴은 단위 기능을 수행하는 형식과 장식자 형식을 정의하고 일반화하여 기반 클래스를 제공합니다. 이때 기반 클래스를 컴포넌트라 부르며 장식자에 멤버로 컴포넌트 형식을 포함합니다. 장식자 개체는 포함된 내부 개체가 어떠한 기능을 수행하는가에 따라 실제 수행할 수 있는 기능이 달라집니다. , 사용자는 장식자를 사용하는 것처럼 보이지만 실제 동작은 장식자 내부에 포함된 개체의 기능이 수행되는 것입니다. 여러 단위 기능을 수행하게 하려면 장식자 개체에 각 기능을 수행하는 형식 개체를 포함하면 됩니다. 물론, 같은 단위 기능을 반복해서 사용하고자 한다면 같은 형식의 장식자 개체를 여러 개 만들어서 포함하면 됩니다.

 

 한글이나 MS 워드와 같은 문서 편집기에서는 문서에 포함할 수 있는 요소들을 장식자 패턴을 적용하고 있습니다.


 

장식자 패턴(Decorator Pattern)



Decorator.zip



2016/04/26 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 장식자 패턴(Decorator Pattern) - 개요, 시나리오


2016/04/26 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 장식자 패턴(Decorator Pattern) - 설계(Design)


2016/04/26 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 장식자 패턴(Decorator Pattern) - 구현



Escort GoF 디자인 패턴 C# 소개 바로가기



반응형