Design Pattern for Smalltalk – Decorator

t_Dpsc_chapter04_Decorator_01

Decorator패턴은 원래의 클래스에 변경을 전혀 추가하지 않고 원하는 기능을 추가하려고 할 때 사용된다. 추가를 원하는 기능이 2개 이상인 경우 한개의 Decorator 추상클래스를 만든 뒤 하위클래스를 추가하려는 기능별로 구현한 후 이 하위클래스를 겹겹이 적용하면 하나의 객체에 부수의 기능을 코드 수정없이 사용할 수 있다.

Decorator 패턴의 구현에는 가장 중요한 점이 있다. 트리구조 안의 모든 클래스는 동일한 인터페이스를 지원해야 만들어진 하위클래스를 원활하게 사용할 수 있다.Decorator패턴의 이런 특성덕분에 클라이언트는 사용하는 객체가 Decorator 객체인지, 원래의 클래스인지를 구분하지 못한다. 트리구조에 포함된 모든 클래스의 인터페이스가 동일하기 때문이다. 이에대한 개념은 [디자인패턴] 251p 상단에 있는 코드로 정확하고 간결하게 설명될 수 있다.

Decorator패턴은 객체의 인터페이스는 유지하면서 무언가를 덧대어서 동작에 변화를 준다는 점에서 프로그래밍에 유연성과 확장성을 보태주며, 원래의 클래스에 코드 수정을 일으키지 않는다는 점에서 매우 유용하다. 이런점 덕분에 기능의 추가가 필요할 때 Decorator패턴을 사용하면 제한없이 기능별로 만들어지는 코드가 수정된 하위클래스의 남용을 막을 수 있는 이점이 있다.

Decorator패턴에서 가능의 요구에 따른 하위클래스의 수평적 확장은 수직적 확장에 비해 관리의 편의성도 제공해주게 된다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다