A Blackhole

Abstract Factory Pattern

2018-06-03

Abstract Factory Pattern

Abstract factory pattern groups object factories that have a common theme.

구체적인 생성 구현은 하위 클래스에게 맡기고 추상적인 팩토리들을 조합한다.

UML

abstract-factory-pattern

구성 요소

  • AbstrctFactory : AbstractProduct의 생성 책임을 가짐.
  • AbstractProduct : 추상 생성된 instanceinterface 를 정의.
  • ConcreteFactory : AbstractProduct를 구현하여 대응되는 themeConcreteProduct를 생성, 그룹지음.
  • ConcreteProduct : AbstractProduct의 interface를 구현.
  • Client : AbstractFactoryAbstractProduct를 사용해 주어진 역할을 수행.

확장

  • ConcreteFactory를 확장하는 것은 매우 쉽다. 해당 interface 가 이미 구체화 되어 있으며, Abstract 파트를 수정할 필요가 없다.
  • Product를 추가하게 되면 수정해야할 부분이 매우 많아진다.

관련 패턴

  • Builder : Builder는 복잡한 instance를 단계적으로 만든다면, Abstract Factory는 추상적인 부품의 조합이란 측면으로 다가간다.
  • Factory Method : 제품이나 부품을 만들 때 Factory Method로 되는 경우가 종종 있다.
  • Composite : Abstract Factory로 만들어진 제품이 Composite로 되는 경우가 종종 있다.
  • Singleton : ConcreteFactorySingleton으로 된 경우가 종종 있다.

예제

dpexample github project