Template Method Pattern是在父類建立處理邏輯的大綱骨架,而在子類補充具體的處理內容。把這個Pattern應用在生產對象實例方面,就是Factory Methond Pattern.
程序示例
IDCard類和IDCardFactory類則處理實際的內容,屬於idcoard包的一部分。
Main類是測試用類。
//Product類
//product類
public abstract class Product
{
public abstract void use();
}
//Factory類public abstract class Factory
{
public final Product create(String string)
{
Product p = createProduct(owner);
registerProduct(p);
return p;
}
protected abstract Product createProduct(String owner);
protected abstract void registerProduct(Product product);
}
//IDCard類Public class IDCard extends Product
{
private String owner;
IDCard(String owner)
{
System.out.println("建立"+owner+"的卡");
this.owner = owner;
}
public void use()
{
System.out.println("使用"+owner+"的卡");
}
public String getOwner()
{
return owner;
}
}
//IDCardFactory類public class IDCardFactory extends Factory
{
private Vector owners = new Vector();
protected Product createProduct(String owner)
{
return new IDCard(owner);
}
protected void registerProduct(Product product)
{
owners.add(((IDCard)product).getOwner());
}
public Vector getOwners()
{
return owners;
}
}
//Main類public class Main
{
public static void main(String[] args)
{
Factory factory = new IDCardFactory();
Product card1 = factory.create("changbin");
Product card2 = factory.create("daniel");
card1.use();
card2.use();
}
}
本Pattern用到了Template Method Pattern
用處:框架與內容
如果想利用同一個框架建立不同的產品和工廠,這是完全不用修改Factory和Product,而只要建立**Factory以及**Procut就可以了。
在實際過程中,設計師應把設計模式完整的告訴給後期維護人員,否則經過維護可能與初衷漸行漸遠。