Factory Method Pattern
Factory method pattern
creates objects without specifying the exact class to create.
Template method pattern
이 상위 클래스에서 처리의 골격을 만들고 하위 클래스에서 구체적인 처리 내용을 정하는 패턴이였다면 Factory method pattern
은 상위 클래스에서 생성의 골격을 만들고 하위 클래스에서 구체적인 생성 내용을 정하는 패턴이 되겠다.
Factory
라는 말에서 알 수 있듯이 해당 패턴은 instance
를 만드는 공장이 되겠다. 오로지 생성 책임만 지면서 실제 구현 클래스와의 의존성을 제거한다.
UML
구성 요소
- Product : instance의 interface를 정의.
- ConcreteProduct : interface를 구현.
- Creator : Product의 생성 책임을 지고 있는 ConcreteCreator의 골격을 정함.
- ConcreteCreator : Creator를 구현하며 ConcreteProduct 생성의 책임을 지님.
특징
- Product와 Creator는 ConcreteProduct, ConcreteCreator에 의존하고 있지 않다.
- 즉, 자유로운 확장에 용이.
factory method의 구현방법
- 추상 메소드를 사용
- default 구현을 준비해 둠. (이 때는 Product 클래스가 추상 클래스가 될 수 없음.)
- default 구현으로 에러를 발생시킴. (하위 클래스에서 구현 되지 않았을 경우 에러 발생.)
관련 패턴
Template Method
Singleton
: 같은 생성 책임을 지닌 패턴Composite
: Product 역할에 이 패턴을 적용할 수 있음.Iterator
:Iterator
instance 생성 시Factory Method
를 사용할 수 있다.