패스잇
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 코칭합니다.

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

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