工廠方法模式 中的 工廠方法不能為靜態方法

2021-09-29 06:56:13 字數 741 閱讀 2829

截圖來自參考文章

乙個類的靜態方法,就是只要是這個類的物件,」物件.靜態方法」,呼叫的都是同乙個方法:

比如 class a有個靜態方法 a();

第乙個類a的例項 a1 = new a();

第二個類a的例項 a2 = new a();

這個時候 a1.a()和a2.a()執行的根本就是同乙個類方法。

也就是說,靜態的意思,是這個類的物件共享的,只要是這個類的物件,都有權利呼叫。

如上圖,如果factorymethod為靜態方法:

定義concretefactory,

那麼使用的時候,我們希望通過將物件的建立延遲到子類

factory f = new concretefactory();

這個時候,我們想要呼叫factorymethod完成某乙個具體物件的建立

f.factorymethod();

這個時候,呼叫的是factory中的factorymethod()方法

而不是concretefactory中的factorymethod()方法

因為f是乙個factory類的例項

而factory的factorymethod()方法,根本就什麼也不做,全靠子類

所以factory的方法,不能為靜態方法。

工廠方法模式 工廠方法模式

工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...

工廠方法模式 工廠方法模式 二

工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...

簡單工廠方法,工廠方法,抽象工廠方法

以大話設計模式計算器為例 簡單工廠方法是由具體執行功能類,工廠類,客戶端構成,工廠類有case語句,負責建立不同的類,客戶端呼叫工廠類裡面的工廠方法,工廠類的工廠方法根據客戶端傳進去的引數new相應的類的物件返回給客戶端,客戶端得到返回的物件用該物件初始化該物件的成員變數最後呼叫該物件的方法執行計算...