- 데코레이터 패턴은 프록시 패턴과 구현 방식이 같다.
- 다만, 프록시 패턴은 클라이언트가 최종적으로 돌려 받는 return 값을 조작하지 않고 그대로 전달하면 반면, 데코레이터 패턴은 클라이언트가 받은 return 값에 장식을 더한다.
프록시 패턴과 데코레이터 패턴 비교
프록시 패턴
- 제어의 흐름을 변경하거나 별도의 로직 처리 목적
- 클라이언트가 받는 return 값을 특별한 경우가 아니면 변경하지 않는다.
데코레이터 패턴
- 클라이언트가 받는 return 값에 장식을 더한다.
Code Example
public interface BaseService {
public abstract String runSomething();
}
public DefaultService implements BaseService {
@Override
public String runSomething() {
return "서비스";
}
}
public DecoratorService implements BaseService {
BaseService defaultService;
@Override
public String runSomething() {
defaultService = new DefaultService();
return "Decorator" + defaultService.runSomething();
}
}
public class ClientWithDecorator {
public static void main(String[] args) {
BaseService DecoratorService = new DecoratorService();
System.out.println(decoratorService.runSomething());
}
}