工廠方法模式:定義乙個建立產品物件的工廠介面,讓子類決定例項化哪一種例項物件,也就是將實際建立例項物件的工作推遲到子類當中,核心工廠類不再負責具體產品的建立。可以這樣理解工廠模式:由乙個抽象工廠定義了建立產品的介面,但是具體是哪一種產品抽象工廠是不知道的,產品的例項化工作被推遲到具體工廠中。
**實現:
抽象產品:
package com.demo.factorymethod.product;
public abstract class abstractproduct
public abstract void show();
}
具體產品:
package com.demo.factorymethod.product;
public class product1 extends abstractproduct
}
抽象工廠:
package com.demo.factorymethod.factory;
import com.demo.factorymethod.product.abstractproduct;
public inte***ce ifactory
具體工廠:
package com.demo.factorymethod.factory;
import com.demo.factorymethod.product.abstractproduct;
import com.demo.factorymethod.product.product1;
public class factoryimpl1 implements ifactory
@override
public abstractproduct createproduct()
}
測試**:
package com.demo.factorymethod;
import com.demo.factorymethod.factory.factoryimpl1;
import com.demo.factorymethod.factory.ifactory;
import com.demo.factorymethod.product.abstractproduct;
public static void main(string args)
}
結果輸出:
this is a product1.
如果又想生產其他的產品product2,在保持原有程式的穩定性的情況下,該如何修改?可以再定義乙個具體的工廠去例項化新的例項物件。
**實現:
具體產品:
package com.demo.factorymethod.product;
import com.demo.factorymethod.product.abstractproduct;
public class product2 extends abstractproduct
}
具體工廠:
package com.demo.factorymethod.factory;
import com.demo.factorymethod.product.abstractproduct;
import com.demo.factorymethod.product.product2;
public class factoryimpl2 implements ifactory
@override
public abstractproduct createproduct()
}
測試**:
package com.demo.factorymethod;
import com.demo.factorymethod.factory.factoryimpl2;
import com.demo.factorymethod.factory.ifactory;
import com.demo.factorymethod.product.abstractproduct;
public static void main(string args)
}
結果輸出:
this is product2.
使用工廠方法模式的適用場合:
1) 當子類的型別可能會有很多,以後需要不斷增添不同的子類實現時;
2) 當乙個系統尚在框架設計階段,還不知道將來需要例項化那些具體類時;
3) 系統設計之初不需要具體物件的概念;
4) 需要生成複雜的物件時。
工廠方法模式 工廠方法模式
工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...
工廠方法模式 工廠方法模式 二
工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...
工廠方法模式(一) 簡單工廠方法模式
ps 第二篇學習部落格,堅持就是勝利。繼續設計模式的學習,記錄工廠模式,加深自己的理解。基本結構 abstractproduct 用來定義基本的商品的抽象 public abstract class abstractphoneproduct 用來實現抽象商品,生成各種商品 public class ...