독립적인 여러 객체의 군을 생성하기 위한 인터페이스 제공
정의: 추상적인 부품을 조립해서 추상적인 제품을 만드는 추상적인 공장 같은 패턴
: 클라이언트에서 구상 클래스를 지정하지 않으면서도 일군의 객체를 생성할 수 있도록 하는 패턴
활용:
1. 생성되고 구성되고 표현되는 방식과 무관하게 시스템을 독립적으로 만들고자 할 때
2. 하나 이상의 제품군들 중 하나를 선택해서 시스템을 설정해야 하고 한번 구성한 제품을
다른 것으로 대체 가능할 때
3. 관련된 객체군을 함께 사용해서 시스템을 설계하고,
이 제품이 갖는 제약사항을 따라야 할 때
4. 제품에 대한 클래스 라이브러리를 제공하고,
그들의 구현이 아닌 인터페이스를 표현하고 싶을 때
결과:
1.구체적인 클래스를 분리한다 –
추성클래스가 정의한 인터페이스를 통해서만 클라이언트 프로그램을 작성한다
2. 제품군을 쉽게 대체할 수 있도록 한다
3. 제품간의 일관성을 증진한다
4. 새로운 종류의 제품을 제공하기 어렵다 –
새로운 제품에 대해 추상 팩토리를 확장하는 것이 어렵다
단점: 클래스 계층이 커질 수 있다
관련 패턴: AbstractFactory 클래스는 Factory Method 패턴이나 Prototype 패턴을 이용해서 구현된다.
Concrete Factory의 경우는 Singleton 이 대부분이다

'프로그래밍 > 디자인패턴' 카테고리의 다른 글
GoF 의 디자인 패턴 (0) | 2014.06.20 |
---|---|
Factory Method (0) | 2014.03.31 |
Builder Pattern (0) | 2014.03.31 |
Disign Pattern : 디자인 패턴의 개념 (0) | 2014.02.25 |
GoF 의 디자인 패턴 (0) | 2013.04.08 |