본문 바로가기
OLD_달려라/소프트웨어공학

Design Pattern] Abstract Factory

by 달승 2020. 6. 28.
 

Abstract Factory

Solution The first thing the Abstract Factory pattern suggests is to explicitly declare interfaces for each distinct product of the product family (e.g., chair, sofa or coffee table). Then you can make all variants of products follow those interfaces. For

refactoring.guru

 

추상 팩토리 패턴 (Abstract Factory Pattern)

서로 관련성이 있는 다양한 객체를 생성하기 위한 인터페이스를 제공한다

johngrib.github.io

 

 

 


♬ Abstract Factory 란?
- 구체적인 클래스를 지정하지 않고, 관련 객체를 생성할 수 있는 패턴

- 서브 클래스를 정의하지 않고,
   관련있거나 독립적인 객체를 생성하기 위해 인터페이스를 제공하는 패턴

+) 활용

추상 팩토리 패턴을 사용하면 클라이언트에서 추상 인터페이스를 통해서 일련의 제품들을 공급받을 수 있습니다. 이때, 실제로 어떤 제품이 생산되는지는 전혀 알 필요도 없습니다. 따라서 클라이언트와 팩토리에서 생산되는 제품을 분리시킬 수 있습니다.

 

 

♬ Problem

furniture shop simulator를 만든다고 생각해봅시다.

 

가구는 각각

1. Chair / Sofa / Coffee Table로 구분할 수 있습니다.

또한

2. Art Deco / Victorian / Modern으로도 구분할 수 있습니다.

이 때,

Modern - Chair와 Victorian - Chair는 엄연히 다릅니다.

당연한 이야기지만, 우리는 이렇게 '개별 객체를 구현하는 방법'을 알고 구현해야 합니다.

 

 

♬ Solution

(1) 같은 가구 종류를 포함할 수 있는 interface 구현하기

1)

이에 대한 해결책은 위의 다이어그램과 같이

Victorian-Chair, Modern-Chair, Art Deco-Chair 등 다양한 종류의 Chair가 Chair interface를 구현하도록 만드는 것입니다.

 

 

(2) 모든 제품에 대한 생성 목록 인터페이스 선언하기.

 

 

 

 

 

전체 다이어그램

 

Abstract Products 

:  인터페이스 선언

 

Concrete Products 

:  추상적 구현을 구체적이고, 다양한 형태로 생성하는 클래스

 

Abstract Factory 

:  Product A/B를 생성하는 인터페이스

 

Concrete Factories

:  아래 그림의 VictorianFunitureFactory / ModernFunitureFactory에 해당되는 클래스

   & 구체적으로 팩토리가 생성하는 객체 정의

 

Client

:  Abstract Factory & Abstract Product 클래스에 선언된 인터페이스 사용.

'OLD_달려라 > 소프트웨어공학' 카테고리의 다른 글

Design Pattern ] Singleton Pattern  (0) 2020.07.02
Design Pattern] Builder  (0) 2020.07.02
GUI Swing ] Factory Method Pattern  (0) 2020.07.01
Design Pattern] Factory Method  (0) 2020.06.27

댓글