본문 바로가기
GoF의 디자인 패턴

데코레이터(Decorator) 패턴

by 아토로 2022. 2. 1.

기존 코드를 변경하지 않고 부가 기능을 추가하는 패턴

 

상속이 아닌 위임을 사용해서 보다 유연하게(런타임에) 부가 기능을 추가하는 것도 가능하다.

구현 방법

장단점

장점

  • 새로운 클래스를 만들지 않고 기존 기능을 조합할 수 있다.
  • 컴파일 타임이 아닌 런타임에 동적으로 기능을 변경할 수 있다.

단점

  • 데코레이터를 조합하는 코드가 복잡할 수 있다.

실무 적용 사례

자바

  • InputStream, OutputStream, Reader, Writer의 생성자를 활용한 Wrapper
  • java.util.Collections가 제공하는 메소드들 활용한 Wrapper
  • javax.servlet.http.HttpServletRequest/ResponseWrapper

스프링

  • ServerHttpRequestDecorator

예제 코드

https://github.com/jsyang-dev/study-designpattern/tree/master/src/main/java/me/study/designpattern/decorator

'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

댓글