정의(Definition)
객체를 생성하기 위한 인터페이스를 정의함에 있어서 객체를 생성하는 부분을 서브 클래스(Sub-Class)에 위임하는 객체 지향 패턴.
쉽게 생각해 객체를 만들어내는 공장을 만드는 패턴이라 할 수 있다.
[UML로 표현된 팩토리 메소드]
특징(Features)
- 장점 : 구조와 구현을 분리할 수 있어서 클래스 간의 결합도를 낮출 수 있다.
팩토리 클래스만 관리하면 되므로 객체 생성에 대한 확장도 쉽게 구성할 수 있다.
- 단점 : 객체가 늘어날 때마다 서브 클래스 재정의로 인한 불필요한 클래스를 생성해야할 수 있다.
예제(Example)
- 요구 사항
* 김치와 김치 생성 과정을 구현
김치를 생성하기 전, 데이터베이스에서 김치 정보를 요청
중복된 김치 생성을 막기 위해서 데이터베이스에 김치 생성 로그를 남김
* 김치를 생성하는 주체를 분리해서 정의
* 김치는 interface로 다룸
김치는 made라는 메소드를 기본적으로 가짐
* 김치의 종류는 갓김치와 총각김치 존재
코드(Codes)
참고(Reference)
-
※ 정확하고 부드러운 태클은 언제나 환영입니다.