728x90
반응형

개요
Decorator 패턴은 기존 객체의 구조를 변경하지 않고, 런타임에 객체에 새로운 기능을 추가할 수 있도록 하는 구조(Structural) 디자인 패턴이다. 상속 대신 합성(Composition)을 활용하여 유연하게 기능을 확장할 수 있으며, UI 컴포넌트, 스트림 처리, 로깅 등 다양한 분야에서 활용된다.
1. 개념 및 정의
데코레이터 패턴은 기본 객체(Component)를 감싸는(wrapper) 객체를 통해 기능을 동적으로 추가하는 방식이다. 여러 개의 데코레이터를 중첩하여 다양한 기능을 조합할 수 있으며, 객체의 확장성을 크게 향상시킨다.
2. 특징
| 항목 | 설명 | 비고 |
| 동적 확장 | 런타임 기능 추가 | 유연성 증가 |
| 상속 대체 | 합성 기반 구조 | 코드 재사용 |
| 중첩 구조 | 여러 기능 조합 가능 | 확장성 우수 |
한줄 요약: 객체를 감싸는 방식으로 기능을 유연하게 확장한다.
3. 구성 요소
| 구성 요소 | 설명 | 역할 |
| Component | 기본 인터페이스 | 공통 기능 정의 |
| Concrete Component | 기본 객체 | 원본 기능 제공 |
| Decorator | 래퍼 클래스 | 기능 확장 |
| Concrete Decorator | 실제 확장 기능 | 추가 로직 구현 |
한줄 요약: 기본 객체와 이를 감싸는 구조로 구성된다.
4. 기술 요소
| 기술 | 설명 | 특징 |
| 합성(Composition) | 객체 포함 구조 | 유연성 확보 |
| 인터페이스 구현 | 동일 타입 유지 | 투명성 유지 |
| 체이닝 구조 | 데코레이터 중첩 | 기능 조합 |
한줄 요약: 합성과 인터페이스를 활용한 확장 구조이다.
5. 장점 및 이점
| 장점 | 설명 | 효과 |
| 유연한 확장 | 기능 추가 용이 | 유지보수성 향상 |
| 코드 재사용 | 기존 클래스 유지 | 비용 절감 |
| 조합 가능 | 다양한 기능 조합 | 확장성 증가 |
한줄 요약: 확장성과 재사용성을 동시에 확보한다.
6. 주요 활용 사례 및 고려사항
| 활용 사례 | 설명 | 고려사항 |
| Java I/O | InputStream 확장 | 구조 복잡성 |
| UI 컴포넌트 | 기능 추가 (스크롤 등) | 객체 수 증가 |
| 로깅/보안 | 기능 확장 | 디버깅 어려움 |
한줄 요약: 강력하지만 과도한 사용 시 구조가 복잡해질 수 있다.
7. 결론
Decorator 패턴은 객체의 기능을 동적으로 확장할 수 있는 강력한 설계 패턴으로, 상속의 한계를 극복하는 대안으로 활용된다. 특히 다양한 기능 조합이 필요한 시스템에서 유용하며, 현대 소프트웨어 아키텍처에서 중요한 역할을 수행한다.
728x90
반응형
'Topic' 카테고리의 다른 글
| Adapter Pattern(어댑터 패턴) (0) | 2026.06.14 |
|---|---|
| Strategy Pattern(전략 패턴) (0) | 2026.06.13 |
| Observer Pattern(옵저버 패턴) (0) | 2026.06.12 |
| Factory Method Pattern(팩토리 메서드 패턴) (0) | 2026.06.12 |
| Singleton Pattern(싱글톤 패턴) (0) | 2026.06.11 |