Abstract Factory Pattern
Abstract factory pattern groups object factories that have a common theme.
구체적인 생성 구현은 하위 클래스에게 맡기고 추상적인 팩토리들을 조합한다.
UML

구성 요소
AbstrctFactory:AbstractProduct의 생성 책임을 가짐.AbstractProduct: 추상 생성된 instance 의 interface 를 정의.ConcreteFactory:AbstractProduct를 구현하여 대응되는 theme 의ConcreteProduct를 생성, 그룹지음.ConcreteProduct:AbstractProduct의 interface를 구현.Client:AbstractFactory와AbstractProduct를 사용해 주어진 역할을 수행.
확장
ConcreteFactory를 확장하는 것은 매우 쉽다. 해당 interface 가 이미 구체화 되어 있으며,Abstract파트를 수정할 필요가 없다.Product를 추가하게 되면 수정해야할 부분이 매우 많아진다.
관련 패턴
Builder:Builder는 복잡한 instance를 단계적으로 만든다면,Abstract Factory는 추상적인 부품의 조합이란 측면으로 다가간다.Factory Method: 제품이나 부품을 만들 때Factory Method로 되는 경우가 종종 있다.Composite:Abstract Factory로 만들어진 제품이Composite로 되는 경우가 종종 있다.Singleton:ConcreteFactory가Singleton으로 된 경우가 종종 있다.