-
[GoF]데코레이터 패턴(Decorator Pattern)Gof Design Pattern 2021. 12. 16. 22:38
데코레이터 패턴(Decorator Pattern)
데코레이터 패턴이란?
데코레이터 패턴은 장식과 실제 내용물을 동일시 하는 패턴으로 생성된 객체에 동적으로 행위를 추가하는 패턴입니다.
※자바의 I/O 스트림 클래스는 Decorator 패턴을 사용한 것입니다.
Socket socket = new Socket(); BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
데코레이터 패턴 왜 사용할까?
기능을 확장할 때 IS-A 관계라면 상속을 사용하게 됩니다. 그러나 HAS-A 관계라면 상속을 사용하기 모호한 상황이게 됩니다. 무언가 기능을 유연하게 추가하고자 할때 데코레이터 패턴을 사용하여 기능을 확장할 수 있습니다. 즉, 전체 객체를 바꾸는 게 아니라 객체에 새로운 기능을 하나씩 추가할 수 있습니다.
데코레이터 패턴을 사용하게 되면
- 상속보다 설계의 유연성을 증가시킴
- Decorator 조합을 통해 새로운 서비스를 지속적으로 추가 할 수 있음
- 불필요한 경우 Decorator 삭제가 가능함
- Decorator와 실제 컴포넌트는 동일한 것이 아님
- 작은 규모의 객체들이 많이 생성될 수 있음
클래스 다이어그램
객체 협력
- Component : 동적으로 추가할 서비스를 가질 수 있는 객체 정의
- ConcreteComponent : 추가적인 서비스가 필요한 실제 객체
- Decorator : Component의 참조자를 관리하면서 Component에 정의된 인터페이스를 만족하도록 정의
- ConcreteDecorator : 새롭게 추가되는 서비스를 실제 구현한 클래스로 addBehavior()를 구현
코드보기 Click!
'Gof Design Pattern' 카테고리의 다른 글
[GoF] 어댑터패턴(Adapter Pattern) (0) 2021.12.19 [GoF]컴포지트 패턴(Composite Pattern) (0) 2021.12.18 [GoF]브릿지 패턴(Bridge Pattern) (0) 2021.12.13 [GoF]전략 패턴(Strategy) (0) 2021.12.10 [GoF] 팩토리 메서드 패턴(Factory Method Pattern) (0) 2021.12.05