정의[위키피디아]
데코레이터 패턴(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 |