Decorator 객체 결합으로 기능을 동적으로 유연하게 확장할 수 있게 하는 패턴. 기본 기능에 추가할 수 있는 기능 종류가 많은 경우, 각 추가 기능을 Decorator 클래스로 정의한 뒤 필요한 Decorator 객체를 조합하는 식으로 설계함 상속을 통해 확장할 수도 있지만, 디자인 유연성 면에서 상속은 비추천 기존 코드를 수정하지 않고도 확장할 수 있도록 Decorator 패턴 사용 ex) 자바 입출력의 Filter Stream 기능. 단점 자잘한 객체가 많이 추가되므로, Decorator 패턴을 너무 많이 사용할 경우 코드가 필요 이상으로 복잡해질 수 있다. Component를 초기화하기 위한 코드가 복잡해진다. Decorator로 Wrapping해야 하는 경우가 종종 생김. 따라서 보통 Fac..