패스잇
CS 기초 · 중급

기존 객체의 기능을 변경하지 않고 동적으로 새로운 기능을 추가해야 할 때 Decorator 패턴을 활용할 수 있습니다. 상속 대신 Decorator 패턴을 사용하는 이유와, 언제 이 패턴을 적용하는 것이 효과적인지 설명해 주세요.

힌트 · 상속의 단점(클래스 폭발)을 회피하며, 객체의 기능을 동적으로 조합하여 확장할 수 있습니다.

객체 결합유연성상속의 단점동적 기능 추가책임 할당

모범답안

Decorator 패턴은 기존 객체의 기능을 수정 없이 동적으로 확장할 때 유용합니다. 상속 대신 이 패턴을 사용하는 이유는 상속의 단점인 '클래스 폭발'을 피할 수 있기 때문입니다. 다양한 기능 조합을 상속으로 구현하면 너무 많은 하위 클래스가 생길 수 있습니다.

Decorator 패턴은 객체 결합을 통해 기능을 추가하므로, 런타임에 유연하게 기능을 조합할 수 있습니다. 예를 들어, 커피 객체에 우유, 설탕, 시럽 등의 데코레이터를 추가하여 다양한 커피를 만들 수 있습니다.

이 패턴은 객체에 새로운 책임을 동적으로 할당해야 할 때, 그리고 객체의 핵심 로직 변경 없이 부가 기능을 추가해야 할 때 효과적입니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 디자인 패턴 면접 질문

← 디자인 패턴 면접 질문 전체 보기