<aside>

</aside>


🌟 챕터 소개

안녕하세요! 😊 오늘은 객체에 새 옷을 입히거나 장식을 달아주듯 기능을 추가하는 **데코레이터 패턴(Decorator Pattern)**에 대해 알아보겠습니다. 🧥✨

기능 추가를 위해 상속을 사용하면, 다양한 기능 조합을 위해 수많은 클래스가 필요해질 수 있습니다. 🤯 데코레이터 패턴은 상속의 한계를 극복하고, 객체의 원래 코드를 수정하지 않으면서 새로운 책임(기능)을 동적으로, 그리고 유연하게 추가하는 방법을 제공합니다. 마치 커피에 휘핑크림, 초코 시럽을 원하는 대로 추가하는 것과 같죠! ☕


🎯 챕터 목표

이번 강의의 목표입니다.

  1. 데코레이터 패턴의도(객체에 동적으로 새로운 책임 추가)를 설명할 수 있습니다.
  2. 이 패턴이 해결하는 문제(상속의 경직성, 클래스 조합 폭발)를 식별할 수 있습니다.
  3. 주요 참여자(Component, ConcreteComponent, Decorator, ConcreteDecorator)와 각자의 역할을 이해합니다.
  4. **객체 래핑(wrapping)**과 **위임(delegation)**을 어떻게 활용하는지 설명할 수 있습니다.
  5. Python에서 클래스 기반 데코레이터 패턴을 구현하고 활용할 수 있습니다.
  6. 데코레이터 패턴의 이점(유연성, OCP 준수)을 이해합니다.
  7. Python의 @decorator 구문과 데코레이터 패턴의 개념적 관계를 이해합니다.

💻 강의에서 사용되는 전체 코드 및 프로젝트 구조

데이터 스트림(Stream) 예제를 통해 기본 파일 스트림에 압축, 암호화 기능을 데코레이터로 추가하는 과정을 보여드립니다. 모든 코드는 decorator_example.py 파일 하나에 담겠습니다.