CS 기초 · 중급
Factory Method 패턴과 Abstract Factory 패턴은 모두 객체 생성을 추상화하지만, 목적과 적용 방식에 차이가 있습니다. 두 패턴의 주요 차이점을 설명하고, 각각 어떤 상황에 더 적합한지 구체적인 예시를 들어 비교해 주세요.
힌트 · Factory Method는 단일 제품 계층을, Abstract Factory는 여러 제품군을 생성하는 데 초점을 맞춥니다.
생성 책임 위임객체 군(Family) 생성구현 분리확장성유연성
모범답안
Factory Method와 Abstract Factory 패턴은 모두 객체 생성 로직을 캡슐화하여 클라이언트 코드로부터 분리하는 역할을 합니다.
Factory Method는 객체 생성 책임을 서브클래스에게 위임하여, 팩토리 클래스를 상속받은 서브클래스에서 어떤 객체를 생성할지 결정합니다. 이는 단일 제품 계층 구조에서 유연성을 확보할 때 유용합니다. 예를 들어, Button 인터페이스를 정의하고, WindowsButton, MacOSButton 클래스가 이를 구현할 때, 운영체제에 따라 다른 버튼 객체를 생성하는 팩토리를 만들 수 있습니다.
반면, Abstract Factory는 서로 관련 있는 객체들의 군(Family)을 생성하는 인터페이스를 제공합니다. 이는 여러 제품군을 일관성 있게 생성해야 할 때 적합합니다. 예를 들어, GUI 애플리케이션에서 Button, TextField 등의 UI 컴포넌트들을 Windows 스타일과 MacOS 스타일로 제공해야 할 때, 각 스타일별 팩토리를 만들어 사용할 수 있습니다.
핵심적인 차이는 Factory Method는 단일 객체 생성에 집중하고, Abstract Factory는 관련 객체들의 집합을 생성한다는 점입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 디자인 패턴 면접 질문
- 스트래티지(Strategy) 패턴은 다양한 알고리즘을 유연하게 교체해야 할 때 어떻게 활용될 수 있는지 설명해주세요.
- 옵저버(Observer) 패턴은 객체 간의 일대다 의존성을 어떻게 관리하며, 주로 어떤 시스템에서 효과적으로 사용될 수 있나요?
- 실무에서 Singleton 패턴을 사용할 때 발생할 수 있는 문제점(예: 테스트 용이성, 멀티스레딩 환경)과 이를 해결하기 위한 방법에 대해 설명해 주세요.
- 시스템의 특정 동작 방식을 런타임에 유연하게 변경해야 하는 요구사항이 있을 때, Strategy 패턴을 어떻게 적용할 수 있는지 설명하고, 이 패턴이 가져다주는 장점과 단점을 함께 설명해 주세요.
- 비동기적으로 발생하는 이벤트에 대해 여러 컴포넌트가 독립적으로 반응해야 하는 상황에서 Observer 패턴을 적용할 수 있습니다. 이 패턴의 동작 원리를 설명하고, Push 모델과 Pull 모델의 차이점 및 각각의 장단점을 비교해 주세요.
- 기존 객체의 기능을 변경하지 않고 동적으로 새로운 기능을 추가해야 할 때 Decorator 패턴을 활용할 수 있습니다. 상속 대신 Decorator 패턴을 사용하는 이유와, 언제 이 패턴을 적용하는 것이 효과적인지 설명해 주세요.