추상 팩토리 패턴
구조도⌗
추상 팩토리 패턴이란?⌗
상세화된 서브클래스를 정의하지 않고도 서로 관련성이 있거나
독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공하기 위해 사용.
AbstractFactory
개념적 제품에 대한 객체를 생성하는 연산으로 인터페이스를 정의한다.ConcreteFactory
구체적인 제품에 대한 객체를 생성하는 연산을 구현한다.AbstractProduct
개념적 제품 객체에 대한 인터페이스를 정의한다.ConcreteProduct
구체적으로 팩토리가 생성할 객체를 정의하고,AbstractProduct
가 정의하는 인터페이스를 구현한다.Client
AbstractFactory
와AbstractProduct
클래스에 선언된 인터페이스를 사용한다.
언제 사용해야 할까?⌗
- 객체 생성과 객체를 사용하는 시스템을 독립적으로 구성하기 위해서.
- 여러 객체 군을 시스템이 사용하기 위해, 다른것으로도 대체를 쉽게 하기 위해서.
- 여러 객체 군을 함께 사용할 수 있어야 할때.
- 제품에 대한 클래스 라이브러리를 세부 정보를 노출없이 제공하고 싶을 때
- 클래스의 구현으로 제공이 아닌 인터페이스만 노출시키고 싶을 경우.
여러 팩토리에서 객체를 생산하며,
생산된 객체가 무엇인지 몰라도 객체의 인터페이스만으로도 조작할 수 있음.
객체를 조합으로 생성할 경우, 유용하게 사용할 수 있을듯하다.
다만, 패턴 생성시 보일러 플레이트가 한두개가 아닌데.
인터페이스 수정, 추상 메소드의 추가와 같은 수정사항이 생기는 경우…
고민을 좀 해봐야 할듯…
참조⌗
- Head First Design Patterns
- 기계인간 - Abstract Factory Pattern
- 예제 소스