정의[위키피디아]
데코레이터 패턴(Decorator pattern)이란 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴으로, 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있다.
정의[쉬운버전]
데코레이터는 원본에 장식을 더하는 패턴이다.
프록시 패턴 구현 방법이 같지만 다음과 같은 차이점이 있다.
프록시 패턴 vs 데코레이터 패턴
프록시 패턴 - 클라이언트에 최종적으로 리턴되는 반환값을 그대로 전달한다.
데코레이터 패턴 - 클라이언트가 받는 반환값에 장식을 덧입힌다.
프록시 패턴과 동일하게 OCP, DIP 원칙을 구현한다.
소스코드로 이해하기
public interface IService {
public String runSomething();
}
-----------
public class Service implements IService{
public String runSomething() {
return "서비스 짱 !!!";
}
}
--------------
public class Decorator implements IService {
IService service;
@Override
public String runSomething() {
System.out.println("호출에 대한 장식 주목적, 클라이언트에게 반환 결과에 장식을 더하여 전달");
service = new Service();
return "정말" + service.runSomething();
}
}
-----------
public class ClientWithNoDecolator {
public static void main(String[] args) {
Service service = new Service();
System.out.println(service.runSomething());
}
}
------------
public class ClientWithDecolator {
public static void main(String[] args) {
IService decorator = new Decorator();
System.out.println(decorator.runSomething());
}
}
* 마치며,
앞장의 프록시 패턴과 비교하면 거의 유사하다는것과, 조금 다르다는걸 알 수 있다.
참고서적 : 스프링 입문을 위하 자바 객체지향의 원리와 이해
'객체지향 (OOP) > 디자인 패턴' 카테고리의 다른 글
팩토리 메서드 패턴(Factory method pattern) (0) | 2021.06.30 |
---|---|
템플릿 메소드 패턴(template method pattern) (0) | 2021.06.29 |
싱글톤 패턴(Singleton Pattern) (0) | 2021.06.28 |
프록시 패턴(proxy pattern) (0) | 2021.06.22 |
어댑터 패턴 (Adapter Patter) (0) | 2021.06.22 |