기존 코드를 변경하지 않고 부가 기능을 추가하는 패턴
상속이 아닌 위임을 사용해서 보다 유연하게(런타임에) 부가 기능을 추가하는 것도 가능하다.
구현 방법
장단점
장점
- 새로운 클래스를 만들지 않고 기존 기능을 조합할 수 있다.
- 컴파일 타임이 아닌 런타임에 동적으로 기능을 변경할 수 있다.
단점
- 데코레이터를 조합하는 코드가 복잡할 수 있다.
실무 적용 사례
자바
- InputStream, OutputStream, Reader, Writer의 생성자를 활용한 Wrapper
- java.util.Collections가 제공하는 메소드들 활용한 Wrapper
- javax.servlet.http.HttpServletRequest/ResponseWrapper
스프링
- ServerHttpRequestDecorator
예제 코드
'GoF의 디자인 패턴' 카테고리의 다른 글
프록시(Proxy) 패턴 (0) | 2022.02.14 |
---|---|
플라이웨이트(Flyweight) 패턴 (0) | 2022.02.10 |
브릿지(Bridge) 패턴 (0) | 2022.01.29 |
퍼사드 패턴 (0) | 2022.01.28 |
템플릿 메소드(Template method) 패턴 (0) | 2022.01.19 |
댓글