♬ Abstract Factory 란?
- 구체적인 클래스를 지정하지 않고, 관련 객체를 생성할 수 있는 패턴
- 서브 클래스를 정의하지 않고,
관련있거나 독립적인 객체를 생성하기 위해 인터페이스를 제공하는 패턴
+) 활용
추상 팩토리 패턴을 사용하면 클라이언트에서 추상 인터페이스를 통해서 일련의 제품들을 공급받을 수 있습니다. 이때, 실제로 어떤 제품이 생산되는지는 전혀 알 필요도 없습니다. 따라서 클라이언트와 팩토리에서 생산되는 제품을 분리시킬 수 있습니다.
♬ Problem
furniture shop simulator를 만든다고 생각해봅시다.
가구는 각각
1. Chair / Sofa / Coffee Table로 구분할 수 있습니다.
또한
2. Art Deco / Victorian / Modern으로도 구분할 수 있습니다.
이 때,
Modern - Chair와 Victorian - Chair는 엄연히 다릅니다.
당연한 이야기지만, 우리는 이렇게 '개별 객체를 구현하는 방법'을 알고 구현해야 합니다.
♬ Solution
(1) 같은 가구 종류를 포함할 수 있는 interface 구현하기
이에 대한 해결책은 위의 다이어그램과 같이
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 |
댓글