2. 추상 팩토리 (Abstract Factory)

2016. 1. 14. 18:03Study/Design Patterns

반응형

추상 팩토리 (Abstract Factory) - 객체 생성 (Object Creational)

의도
    - 상세화된 서브클래스를 정의하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스 제공

활용성
    - 객체가 생성되거나 구성, 표현되는 방식과 무관하게 시스템을 독립적으로 만들고자 할 때.
    - 여러 제품군 중 하나를 선택해서 시스템을 설정하야 하고 한번 구성한 제품을 다른 것으로 대체할 수 있을 때.
    - 관련된 제품 객체들이 함께 사용되도록 설계되었고, 이 부분에 대한 제약이 외부에도 지켜지도록 하고 싶을 때.
    - 제품에 대한 클래스 라이브러리를 제공하고, 그들의 구현이 아닌 인터페이스를 노출시키고 싶을 때.

결과
    - 구체적인 클래스를 분리한다.
        추상 팩토리 패턴을 쓰면 응용프로그램이 생성할 객체의 클래스를 제어할 수 있다. 일반 프로그램은 추상 인터페이스를
        통해서만 인스턴스를 조작한다. 제품 클래스 이름이 구체 팩토리의 구현에서 분리되므로, 사용자 코드에는 나타나지 않음.
    - 제품군을 쉽게 대체할 수 있다.
        구체 팩토리의 클래스는 응용프로그램에서 한 번만 나타나기 때문에 응용프로그램이 사용할 구체 팩토리를 변경하기 쉽다.
        또한, 구체 팩토리를 변경함으로써 응용프로그램은 서로 다른 제품을 사용할 수 있게 변경된다.
    - 제품 사이의 일관성을 증진시킨다.
        하나의 군에 속한 제품 객체들이 함께 동작하도록 설계되어 있을 때, 응용프로그램은 한 번에 오직 한 군에서 만든 객체를
        사용하도록 함으로써 프로그램의 일관성을 갖도록 해야한다.
    - 새로운 종류의 제품을 제공하기 어렵다.
        생성되는 제품은 추상 팩토리가 생성할 수 있는 제품 집합에만 고정되어 있기 때문에 확장하기가 쉽지 않다.
        만약 새로운 종류의 제품이 등장하면 팩토리의 구현을 변경해야 한다.

구현
    - 팩토리를 싱글톤으로 정의한다.
        전형적으로 응용프로그램은 한 제품군에 대해서 하나의 Concrete Factory 인스턴스만 있으면 된다.
        그러므로 싱글톤으로 구현하는 것이 바람직하다.

반응형

'Study > Design Patterns' 카테고리의 다른 글

Chap 1. 서론  (0) 2016.01.13