구조도

structure.png

추상 팩토리 패턴이란?

상세화된 서브클래스를 정의하지 않고도 서로 관련성이 있거나

독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공하기 위해 사용.

  • AbstractFactory
    개념적 제품에 대한 객체를 생성하는 연산으로 인터페이스를 정의한다.
  • ConcreteFactory
    구체적인 제품에 대한 객체를 생성하는 연산을 구현한다.
  • AbstractProduct
    개념적 제품 객체에 대한 인터페이스를 정의한다.
  • ConcreteProduct
    구체적으로 팩토리가 생성할 객체를 정의하고, AbstractProduct가 정의하는 인터페이스를 구현한다.
  • Client
    AbstractFactoryAbstractProduct 클래스에 선언된 인터페이스를 사용한다.

언제 사용해야 할까?

  • 객체 생성과 객체를 사용하는 시스템을 독립적으로 구성하기 위해서.
  • 여러 객체 군을 시스템이 사용하기 위해, 다른것으로도 대체를 쉽게 하기 위해서.
  • 여러 객체 군을 함께 사용할 수 있어야 할때.
  • 제품에 대한 클래스 라이브러리를 세부 정보를 노출없이 제공하고 싶을 때
    • 클래스의 구현으로 제공이 아닌 인터페이스만 노출시키고 싶을 경우.

여러 팩토리에서 객체를 생산하며,

생산된 객체가 무엇인지 몰라도 객체의 인터페이스만으로도 조작할 수 있음.

객체를 조합으로 생성할 경우, 유용하게 사용할 수 있을듯하다.

다만, 패턴 생성시 보일러 플레이트가 한두개가 아닌데.

인터페이스 수정, 추상 메소드의 추가와 같은 수정사항이 생기는 경우…

고민을 좀 해봐야 할듯…


참조