A Blackhole

Factory Method Pattern

2018-05-27

Factory Method Pattern

Factory method pattern creates objects without specifying the exact class to create.

Template method pattern이 상위 클래스에서 처리의 골격을 만들고 하위 클래스에서 구체적인 처리 내용을 정하는 패턴이였다면 Factory method pattern은 상위 클래스에서 생성의 골격을 만들고 하위 클래스에서 구체적인 생성 내용을 정하는 패턴이 되겠다.

Factory라는 말에서 알 수 있듯이 해당 패턴은 instance를 만드는 공장이 되겠다. 오로지 생성 책임만 지면서 실제 구현 클래스와의 의존성을 제거한다.

UML

factory-method-pattern

구성 요소

  1. Product : instance의 interface를 정의.
  2. ConcreteProduct : interface를 구현.
  3. Creator : Product의 생성 책임을 지고 있는 ConcreteCreator의 골격을 정함.
  4. ConcreteCreator : Creator를 구현하며 ConcreteProduct 생성의 책임을 지님.

특징

  • Product와 Creator는 ConcreteProduct, ConcreteCreator에 의존하고 있지 않다.
  • 즉, 자유로운 확장에 용이.

factory method의 구현방법

  1. 추상 메소드를 사용
  2. default 구현을 준비해 둠. (이 때는 Product 클래스가 추상 클래스가 될 수 없음.)
  3. default 구현으로 에러를 발생시킴. (하위 클래스에서 구현 되지 않았을 경우 에러 발생.)

관련 패턴

  • Template Method
  • Singleton : 같은 생성 책임을 지닌 패턴
  • Composite : Product 역할에 이 패턴을 적용할 수 있음.
  • Iterator : Iterator instance 생성 시 Factory Method를 사용할 수 있다.