1
、工廠方法模式介紹:
工廠方法模式:定義乙個用於建立物件的介面,讓子類決定例項化哪個類。工廠方法使乙個類的例項化延遲到子類。
還以簡單工廠模式中的例子為例:將簡單工廠模式中的工廠
tv類提出來作為乙個公共的介面,而對應的各個功能類各建立乙個具體的工廠去實現這個介面。如下:
inte***ce ifactory //工廠介面
class menufactory:ifactory //選單工廠
}class addvoicefactory:ifactory //加大聲音工廠
}class subvoicefactory:ifactory //減小聲音工廠
}
客戶端的實現方式如下:
ifactory ope***ctory=new addvoicefactory();
functionchoiceoper=ope***ctory.createfunctionchoice();
oper.getresult();
2、簡單工廠
vs工廠方法
前面已經提到了什麼是簡單工廠模式,在這不做過多介紹,就針對其中一點簡要說明一下:簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端選擇的選擇條件動態例項化相關的類,對客戶端來說,去除了與具體產品的依賴,與此同時也會帶來一些問題。還以前面的簡單工廠模式的例子為例:假如說電視機要增加上下換台的功能,不僅要增加這個功能的子類,而且還要修改
tv類中的『
case
』分支條件,這樣既對外進行了功能的擴充套件且對內部**也進行了修改,因此違背了開放
--封閉原則。
與之相比,工廠方法模式即克服了簡單工廠違背開放
--封閉原則的缺點,又保持了封裝物件建立過程的優點。所以工廠方法模式更優越一點。
簡單工廠vs工廠方法vs 抽象工廠方法
以乙個例子來表示 1.生產car 產品 我們可以直接car car new car 該工廠只生產這個產品。具體工廠 具體產品 1 1 2.當car的種類增多以後,我們引入簡單工廠。簡單工廠使用繼承和switch來顯示多型。我們將引入抽象工廠ca ctory。同時,產品將抽象為抽象產品。car car...
簡單工廠vs工廠方法
優點 工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴 如果要增加乙個運算,就要給這個運算工廠裡新增 case 分支,修改了原有的類,這樣不但對擴充套件開放了,對修改也開放了,就違背了開放 封閉原則 public class operati...
簡單工廠 VS 工廠方法 VS 抽象工廠
說到設計模式,自然少不了簡單工廠模式,工廠方法和抽象工廠這三姐妹。它們之間可謂是各有所長,術業專攻啊!這篇部落格來簡單的梳理一下三者之間的關係。那麼工廠又是什麼意思呢?結合三者的特點,我認為可以這樣理解 工廠可以看做乙個特殊的類,在這個類中專門負責生產一系列產品 物件 的乙個集合就可以成為工廠。那麼...