Topic

Decorator Pattern(데코레이터 패턴)

JackerLab 2026. 6. 15. 07:57
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
반응형