java設計模式---Factory Method Pattern---工廠方法模式

Factory Method 工廠方法---建立對象實例交給子類
Template Method Pattern是在父類建立處理邏輯的大綱骨架,而在子類補充具體的處理內容。把這個Pattern應用在生產對象實例方面,就是Factory Methond Pattern.

程序示例


Product類和Factory類屬於framework包。這兩個類負責建立產生對象實例大綱(框架)的功能。
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就可以了。
在實際過程中,設計師應把設計模式完整的告訴給後期維護人員,否則經過維護可能與初衷漸行漸遠。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章