在設計模式中,工廠模式是用的比較多的一種模式,工廠模式一般可分為」簡單工廠」、」工廠方法」、「抽象工廠方法」模式模式,下面主要對比一下」簡單工廠」、」工廠方法」的區別和優缺點
簡單工廠模式
先定義乙個ioperation介面
public inte***ce ioperation else if (type == type_sub)else if (type == type_multi)else if (type == type_div){
return new operationdiv();
return null;
3.使用
ioperation operation = operationfactory.createoperation(operationfactory.type_add);
system.out.println("operation add = "+ operation.caculate(1,2));
operation = operationfactory.createoperation(operationfactory.type_sub);
system.out.println("operation sub = "+ operation.caculate(1,2));
優缺點: 簡單工廠模式實現了生成產品類的**跟客戶端分離,在工程類裡面可以新增所需生成產品的邏輯。缺點是每次增加一種演算法型別,都需要修改工廠類,不符合開閉原則 ()
工廠方法模式
1.定義乙個工廠介面用於實現生成演算法
public inte***ce ifactory {
ioperation createoperation();
2.產生運算的工廠
加法工廠
public class addfactory implements ifactory{
@override
public ioperation createoperation() {
return new operationadd();
減法工廠
public class subfactory implements ifactory{
@override
public ioperation createoperation() {
return new operationsub();
乘法工廠
public class subfactory implements ifactory{
@override
public ioperation createoperation() {
return new operationsub();
3.使用
ifactory factory = new addfactory();
ioperation operation = factory.createoperation();
system.out.println("add factory: "+ operation.caculate(2,5));
factory = new subfactory();
operation = factory.createoperation();
system.out.println("sub factory: "+ operation.caculate(2,5));
4.優缺點
工廠方法中,我們把生成演算法實現類的時間延遲,就是通過對應的工廠來生成對應的演算法類,這樣就做到了無論需要增加多少演算法實現類,都可以通過增加工廠實現類來實現,這種設計方式符合 「開閉」原則。缺點就是當演算法過多的時候,需要定義很多演算法對應的工廠類。
簡單工廠模式和工廠模式的區別
簡單工廠模式 就是通過有乙個工廠類傳遞過來乙個引數決定建立哪一張產品的例項。優點 產品類的等級結構不會反映到工廠類中。從而產品類的結構變化不會影響到工廠類的 變化。缺點是 增加新的產品需要改動對應的工廠類的變化 由於簡單工廠模式是作為靜態方法作為工廠方法,而靜態方法無法被子類繼承,因此工廠角色無法形...
簡單工廠模式和策略模式的區別
最近一直在抽時間研究設計模式,之前對設計模式也有一定的了解,但是都沒有平心靜氣的去研究過,只是了解了一些皮毛,最近打算再深入研究一下,重新開啟了設計模式的資料,對之前的疑問乙個個的刨根問底,今天看了簡單工廠模式和策略模式看的人有點小暈,兩個的大概思路沒有怎麼變,都是通過多型去減少 的耦合度,怎麼看兩...
簡單工廠模式和策略模式的區別
而下面是我的理解 按一般教程中出現的例子理解 簡單工廠模式 客戶端傳乙個條件進工廠類,工廠類根據條件建立相應的產品類物件,並return給客戶端,供客戶端使用。即客戶端使用的是工廠類生產的產品物件。策略模式 客戶端建立乙個context類物件a 可以看作是工廠模式中工廠類 建立乙個策略物件並傳參給物...