CS 기초 · 중급
기존 객체의 기능을 변경하지 않고 동적으로 새로운 기능을 추가해야 할 때 Decorator 패턴을 활용할 수 있습니다. 상속 대신 Decorator 패턴을 사용하는 이유와, 언제 이 패턴을 적용하는 것이 효과적인지 설명해 주세요.
힌트 · 상속의 단점(클래스 폭발)을 회피하며, 객체의 기능을 동적으로 조합하여 확장할 수 있습니다.
객체 결합유연성상속의 단점동적 기능 추가책임 할당
모범답안
Decorator 패턴은 기존 객체의 기능을 수정 없이 동적으로 확장할 때 유용합니다. 상속 대신 이 패턴을 사용하는 이유는 상속의 단점인 '클래스 폭발'을 피할 수 있기 때문입니다. 다양한 기능 조합을 상속으로 구현하면 너무 많은 하위 클래스가 생길 수 있습니다.
Decorator 패턴은 객체 결합을 통해 기능을 추가하므로, 런타임에 유연하게 기능을 조합할 수 있습니다. 예를 들어, 커피 객체에 우유, 설탕, 시럽 등의 데코레이터를 추가하여 다양한 커피를 만들 수 있습니다.
이 패턴은 객체에 새로운 책임을 동적으로 할당해야 할 때, 그리고 객체의 핵심 로직 변경 없이 부가 기능을 추가해야 할 때 효과적입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 디자인 패턴 면접 질문
- Factory Method 패턴과 Abstract Factory 패턴은 모두 객체 생성을 추상화하지만, 목적과 적용 방식에 차이가 있습니다. 두 패턴의 주요 차이점을 설명하고, 각각 어떤 상황에 더 적합한지 구체적인 예시를 들어 비교해 주세요.
- 시스템의 특정 동작 방식을 런타임에 유연하게 변경해야 하는 요구사항이 있을 때, Strategy 패턴을 어떻게 적용할 수 있는지 설명하고, 이 패턴이 가져다주는 장점과 단점을 함께 설명해 주세요.
- 비동기적으로 발생하는 이벤트에 대해 여러 컴포넌트가 독립적으로 반응해야 하는 상황에서 Observer 패턴을 적용할 수 있습니다. 이 패턴의 동작 원리를 설명하고, Push 모델과 Pull 모델의 차이점 및 각각의 장단점을 비교해 주세요.
- Adapter 패턴과 Facade 패턴은 모두 기존 시스템이나 라이브러리와의 상호작용을 돕는 구조 패턴입니다. 두 패턴의 목적과 사용 시점을 비교하여 설명하고, 각각의 실질적인 적용 사례를 들어주세요.
- Proxy 패턴은 실제 객체에 대한 접근을 제어하거나 기능을 추가할 목적으로 사용됩니다. Proxy 패턴의 동작 원리를 설명하고, Virtual Proxy, Remote Proxy, Protective Proxy의 차이점을 구체적인 예시와 함께 설명해 주세요.
- Decorator 패턴과 Proxy 패턴은 구조적으로 유사해 보이지만, 목적과 적용 방식에서 명확한 차이가 있습니다. 복잡한 시스템에서 특정 객체에 대한 횡단 관심사(cross-cutting concerns)를 적용하거나 접근 제어를 구현해야 할 때, 두 패턴 중 어떤 것을 선택해야 하며, 각각의 성능 및 유지보수 측면에서의 장단점은 무엇인지 구체적인 시나리오를 들어 설명해주세요.