設計模式學習 工廠方法模式

2021-10-06 01:11:13 字數 1153 閱讀 9396

工廠方法(factorymethod)模式,定義乙個建立產品物件的工廠介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類。

之前學的簡單工廠模式實現了生成產品類的**跟客戶端分離,在工廠類裡面可以新增所需生成產品的邏輯。缺點是每次增加一種產品型別,都需要修改工廠類,不符合開閉原則,而工廠方法則解決了這個問題。

以計算器為例看看簡單工廠模式和工廠方法模式的區別。下面為工廠類和客戶端的實現寫法:

1、簡單工廠模式寫法

工廠類:
class operationfactory //工廠類

return oper;}}

客戶端應用:
operation oper;

oper = operationfactory.createoperate("+");

oper.numbera = 1;

oper.numberb = 2;

double result = oper.getresult();

2、工廠方法模式寫法

首先建立乙個工廠介面:
inte***ce ifactory

然後加減乘除各建乙個工廠去實現這個介面

class addfactory implements ifactory

}class subfactory implements ifactory

}class mulfactory implements ifactory

}class divfactory implements ifactory

}

客戶端實現:
ifactory ope***ctory = new addfactory();

operation oper = ope***ctory.createoperation();

oper.numbera = 1;

oper.numberb = 2;

double result = oper.getresult();

工廠方法模式實現時,客戶端需要決定例項化哪乙個工廠來實現運算類,工廠方法把簡單工廠的內部邏輯判斷移到了客戶端**來進行,如果想要增加功能,現在不選擇改工廠類的內容,而是對客戶端進行修改。

設計模式學習 工廠方法模式

工廠方法模式,定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,工廠方法使乙個類的例項化延遲到了其子類。之前的簡單工廠模式雖說也非常好,但是在新增和更改生產選項的時候,不得不更改switch和case語句,這點違背了設計模式的開方 封閉的原則。工廠方法模式,既克服了簡單工廠違背開方 封閉原則的缺...

學習設計模式 工廠方法模式

說明 工廠方法跟簡單工廠的區別在於簡單工廠方法在構造的時候,通過判斷輸入引數,例項化不同車物件,而工廠方法新增不同車的工廠,客戶端在呼叫的時候控制例項化哪個車工廠。需求 跟簡單工廠模式一樣,要開不同的車 解決方式 a.乙個開車父類,定義乙個開車方法 b.分別定義子類開奧迪車 開賓士車 開寶馬車 繼承...

設計模式學習 工廠方法模式

設計六大原則 簡單工廠模式 上篇學習了簡單工廠模式,簡單工廠模式的優點就是工廠類封裝具體物件的實現邏輯,會根據外部傳入的選擇條件來判斷返回對應的具體物件,也就是呼叫者無需關心內部實現邏輯,只需傳入所需物件的型別即可,同樣的缺點也很明顯,如果要通過工廠類的獲取所需的具體物件,必須在工廠類中的靜態方法先...