의도 : 상세화된 서브클래스를 정의하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공한다
shapes[0] = factory->createCurvedInstance(); //shapes[0] = new Circle;
shapes[1] = factory->createStraightInstance(); //shapes[1] = new Square;
shapes[2] = factory->createCurvedInstance(); //shapes[2] = new Circle;
#define ROBUST 일 경우 출력결과
Ellipse0: draw
Rectangle1: draw
Ellipse2: draw
[활용성]
- 객체가 생성되거나 구성 - 표현되는 방식과 무관하게 시스템을 독립적으로 만들고자 할 때
- 여러 제품군 중 하나를 선책해서 시스템을 설정해야 하고 한번 구성한 제품을 다른 것으로 대체할 수 있을
때
- 관련된 제품 객체들이 함께 사용되도록 설계되었고, 이 부분에 대한 제약이 외부에도 지켜지도록 하고 싶을 때
- 제품에 대한 클래스 라이브러리를 제공하고, 그들의 구현이 아닌 인터페이스를 노출시키고 싶을 때
'Windows Developer > Design Pattern' 카테고리의 다른 글
[디자인패턴] 싱글톤 (0) | 2011.06.02 |
---|---|
[Template Method design pattern 2] (0) | 2011.01.06 |
[Template Method design pattern 1] (0) | 2011.01.06 |
[Adapter design pattern] (0) | 2011.01.06 |