본문 바로가기

Knowledge/Design Pattern

데코레이터 패턴 (Decorator Pattern)

데코레이터 패턴 (Decorator Pattern)


주어진 상황 및 용도에 따라 어떤 객체에 기능을 덧붙이는 패턴이다.

기능 확장이 필요할 때 서브 클래싱 대신 쓸 수 있는 유용한 대안이다. 


》》 동적으로 객체의 추가적인 기능들을 가진 객체를 덧붙여 꾸밀 수 있다.




여기서 중요한 디자인 원칙 중 하나를 알아야한다.


OCP(Open-Closed Principle) 란? 


OCP는 가장 중요한 디자인 원칙 가운데 중 하나.

클래스는 확장에 대해서는 열려있어야하지만 코드 변경에 대해서는 닫혀 있어야 한다.  


》》 기존 코드는 건드리지 않은 채로 확장을 통해서 새로운 행동을 추가하는 것이 목표 !


데코레이터 패턴 사용법

1. 메인 클래스를 생성한다.

2. 메인 클래스의 객체를 꾸밀 수 있는 서브 클래스의 데코레이터 타입 또는 데코레이터 수퍼클래스를 생성한다.

3. 데코레이터 인터페이스/추상클래스를 구현(상속)한 서브 클래스를 만든다.

4. 메인 클래스의 객체를 생성하면서 해당 객체를 생성자 파라미터를 활용해서 덧씌운다.


데코레이터 패턴 예제



데코레이터가 적용된 예 : 자바 I/O