Template Method pattern 는 상위 클래스에서 뼈대를 만들고, 하위 클래스에서 구체적인 처리의 내용을 만들었다.
이 패턴은 인스턴스 생성에 위 패턴을 적용한 것이다. 즉 인스턴스를 생성하는 곳을 template method pattern으로 구성한 것이
Factory Method pattern 이다.
예제 프로그램) IDCard 생성 공장
public abstract class Product { public abstract void use(); } |
public abstract class Factory { public final Product create(String owner){ Product p = createProduct(owner); return p; protected abstract Product createProduct(String owner); protected abstract void registerProduct(Product product); } |
public class IDCard extends Product { private String owner; IDCard(String owner){ System.out.println(owner + "의 카드를 만든다. "); } public void use(){ System.out.println(owner + "의 카드를 사용한다."); } public String getOwner() { return owner; } }
|
public class IDCardFactory extends Factory { private List owners = new ArrayList(); protected Product createProduct(String owner){ return new IDCard(owner); } protected void registerProduct(Product product){ owners.add(((IDCard)product).getOwner()); } public List getOwners(){ return owners; } } |
public class Main { public static void main(String[] args){ Factory factory = new IDCardFactory(); Product card1 = factory.create("홍길동"); Product card2 = factory.create("이순신"); Product card3 = factory.create("강감찬"); card1.use(); card2.use(); card3.use(); } } |