CS 기초 · 기초
추상 팩토리(Abstract Factory) 패턴은 팩토리 메서드 패턴과 어떻게 다르며, 어떤 종류의 문제를 해결하는 데 효과적인가요?
힌트 · 추상 팩토리는 관련 있는 객체들의 '군(family)'을 묶어서 생성할 때 사용하며, 팩토리 메서드는 단일 객체 생성을 담당하는 반면, 추상 팩토리는 여러 팩토리를 묶는 상위 개념입니다.
객체 생성관련 객체인터페이스구현 분리제품군
모범답안
추상 팩토리 패턴과 팩토리 메서드 패턴의 가장 큰 차이점은 '생성하는 객체의 범위'입니다. 팩토리 메서드는 단일 종류의 객체를 생성하는 데 집중하는 반면, 추상 팩토리는 '관련 있는 객체들의 집합', 즉 제품군을 생성하는 데 사용됩니다.
추상 팩토리는 여러 팩토리 메서드를 묶어놓은 상위 개념이라고 볼 수 있습니다. 예를 들어, GUI 애플리케이션에서 Windows 테마와 macOS 테마를 각각 지원해야 할 때, 추상 팩토리를 사용하면 버튼, 창, 스크롤바 등 각 테마에 맞는 관련 객체들을 일관성 있게 생성할 수 있습니다.
이 패턴은 특정 제품군에 대한 클라이언트 코드를 해당 구현체로부터 분리하여, 시스템이 여러 제품군을 쉽게 전환하거나 새로운 제품군을 추가할 수 있도록 할 때 매우 효과적입니다. 즉, 구현의 독립성을 높이고 유연성을 확보하는 데 강점이 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 디자인 패턴 면접 질문
- 소프트웨어 개발에서 디자인 패턴(Design Pattern)이 무엇인지 설명하고, 이를 사용하는 주된 목적은 무엇인가요?
- 싱글톤(Singleton) 패턴은 어떤 상황에서 사용하기 적합하며, 이 패턴을 구현할 때 주의해야 할 점은 무엇인가요?
- 팩토리 메서드(Factory Method) 패턴은 언제 사용하며, 이 패턴을 적용했을 때 얻을 수 있는 장점은 무엇인가요?
- 빌더(Builder) 패턴은 복잡한 객체를 생성할 때 어떤 이점을 제공하며, 일반적인 생성자(Constructor) 방식과 비교했을 때의 차이점은 무엇인가요?
- 스트래티지(Strategy) 패턴은 다양한 알고리즘을 유연하게 교체해야 할 때 어떻게 활용될 수 있는지 설명해주세요.
- 옵저버(Observer) 패턴은 객체 간의 일대다 의존성을 어떻게 관리하며, 주로 어떤 시스템에서 효과적으로 사용될 수 있나요?