
GoF는 아래와 같이 팩토리 메소드 패턴의 의도를 정의했다.
객체를 생성하기 위해 인터페이스를 정의하지만 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브 클래스가 내리도록 합니다.
팩토리 메소드는 다음과 같은 상황에 사용합니다.
public interface IProduct {
void use();
}
public abstract class AbstractFactory {
public IProduct makeProduct(String type){
IProduct product = createProduct(type);
product.use();
return product;
}
abstract IProduct createProduct(String type);
}
public class FactoryFirst extends AbstractFactory {
@Override
IProduct createProduct(String type) {
switch (type){
case "First":
return new ProductFirst();
case "Second":
return new ProductSecond();
default:
return new ProductDefault();
}
}
}
public class MainEntry {
public static void main(String[] args) {
AbstractFactory factory = new FactoryFirst();
IProduct product = factory.makeProduct("first");
product.use();
}
}
에릭 감마•리처드 헬름•랄프 존스•존 블리시다스, 『GoF의 디자인 패턴』, 프로텍 미디어(2015)
John Grib, 2019년 11월 21일, https://johngrib.github.io/wiki/factory-method-pattern/