목차
- Post not found: spring/design-pattern/spring-aop/cglib/cglib-01
- Post not found: spring/design-pattern/spring-aop/dynamic-proxy/dynamic-proxy-02
- Post not found: spring/design-pattern/spring-aop/dynamic-proxy/dynamic-proxy-01
- Post not found: spring/design-pattern/spring-aop/dynamic-proxy/reflection
- Post not found: spring/design-pattern/spring-aop/concrete-proxy/concrete-proxy-04
- Post not found: spring/design-pattern/spring-aop/concrete-proxy/concrete-proxy-02
- Post not found: spring/design-pattern/spring-aop/concrete-proxy/concrete-proxy-01
- Post not found: spring/design-pattern/spring-aop/decorator/decorator-02
- Post not found: spring/design-pattern/spring-aop/decorator/decorator-01
- Post not found: spring/design-pattern/spring-aop/proxy-pattern/proxy-04
- Post not found: spring/design-pattern/spring-aop/proxy-pattern/proxy-03
- Post not found: spring/design-pattern/spring-aop/proxy-pattern/proxy-02
- Post not found: spring/design-pattern/spring-aop/proxy-pattern/proxy-01
- Post not found: spring/design-pattern/spring-aop/strategy-pattern/strategy-pattern-01
- Post not found: spring/design-pattern/spring-aop/template-method/template-method-01
Decorator 패턴
Decorator 패턴 은 기존 객체 수정없이 부가 기능 추가 를 위해 주로 사용하는 디자인 패턴이다.
Decorator 패턴은 객체 지향 디자인 원칙 중 하나인 개방-폐쇄 원칙(OCP)
을 따릅니다. 이 패턴을 사용하면 코드의 수정 없이 기존 클래스에 새로운 기능을 추가하거나 기존 기능을 수정할 수 있습니다.
Decorator 클래스는 기본 객체와 같은 인터페이스를 사용해 구현되며, 기본 객체를 Wrapping 하여 추가적인 기능을 제공합니다. 이러한 구조는 객체 간의 결합도를 낮추고, 유연성과 확장성을 높입니다.
기존 객체를 감싸는 Wrapper 클래스 를 만들고, Wrapper 클래스에 새로운 기능을 추가하는 방식으로 새로운 기능을 추가하거나 기존 기능을 수정하는데 사용됩니다. Decorator 패턴을 사용하면 객체의 기존 동작을 변경하지 않고도 객체에 새로운 동작을 추가할 수 있습니다.
Decorator 패턴의 구성요소
Component
- 인터페이스나 추상 클래스로 정의된 기본 객체의 공통 인터페이스입니다.
ConcreteComponent
- Component 인터페이스를 구현한 실제 객체입니다.
Decorator
- Component 인터페이스를 구현하며, 기본 객체를 래핑하고 추가적인 기능을 제공하는 추상 클래스입니다.
ConcreteDecorator
- Decorator 추상 클래스를 상속받아 기본 객체를 래핑하고 추가적인 기능을 구현한 실제 객체입니다.
인터페이스
public interface Component { |
대상 객체
|
Client 코드
|
실행 및 결과
|
데코레이터 패턴 적용
- MessageDecorator 는 Component 인터페이스를 구현해 생성하고
내부적으로 대상 Component 객체를 관리한다.
- MessageDecorator 에서 구현된 Method 는 부가기능을 수행하는 로직을 수행하고 대상 Component 객체를 호출한다.
|
실행 및 결과
실제 객체 RealComponent 를 이용해 부가기능이 적용된 MessageDecorator 객체를 생성해준다.
|
실행 결과를 통해 MessageDecorator 가 호출돼 부가기능 로직이 수행되고 실제 객체 RealComponent 가 호출된 것을 확인할 수 있다.