Factory Method는 인스턴스를 생성하는 공장을 Template Method패턴으로 구성한 것이다.
즉, framework 패키지는 정의만 하고, 구현은 구체적인 내용 부분에서 한다. 프레임워크 페키지는 구체적인 내용부분의 페키지에 의존하고 있지 않다는 것이다.
{
//factoryMethod(Creator)
public final Product create (String owner) {
Product p = createProduct(owner);
return p;
}
//factoryMethod(ConreateCreator)
protected Product createProduct(String owner) {
return new IDCard(owner);
}
Factory Method를 사용하면 같은 프레임워크를 사용해(framework 패키지 수정 없이) 다른 '공장'과 다른 '제품'을 추가로 정의할 수 있다.
인스턴스 생성을 위한 클래스 메소드(static 메소드) 전반을 Factory Method라고 부르는 경우가 있다. 이것은 GOF의 Fectory Method 패턴과는 다르지만, Java에서 인스턴스를 생성할 때 자주 사용되는 기법이다.
코드: https://github.com/lawijdo201/Design-Pattern
출처: Java 언어로 배우는 디자인 패턴 입문