優點:工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴
如果要增加乙個運算,就要給這個運算工廠裡新增 case 分支,修改了原有的類,這樣不但對擴充套件開放了,對修改也開放了,就違背了開放-封閉原則
public
class operationfactory
return oper;
}}
效果是一樣的,如果要新增一類志願者,就需要修改原有的類,新增 case 分支,違背了開放-封閉原則
class ******factory
return result;
}}
客戶端需要決定例項化哪乙個工廠來實現運算類,工廠方法把簡單工廠的內部邏輯判斷轉移到了客戶端**中進行,如果想要增加功能,原來是更改工廠類,現在是新增乙個類,然後去更改客戶端
優點:工廠方法克服了簡單工廠違背尅方-封閉原則的缺點,又保持了封裝物件建立過程的優點,工廠方法模式是簡單工廠的進一步抽象和推廣
class undergraduatefactory:ifactory
}//社群志願者工廠
class voluntee***ctory:ifactory
}
簡單工廠vs工廠方法vs 抽象工廠方法
以乙個例子來表示 1.生產car 產品 我們可以直接car car new car 該工廠只生產這個產品。具體工廠 具體產品 1 1 2.當car的種類增多以後,我們引入簡單工廠。簡單工廠使用繼承和switch來顯示多型。我們將引入抽象工廠ca ctory。同時,產品將抽象為抽象產品。car car...
簡單工廠 VS 工廠方法
1 工廠方法模式介紹 工廠方法模式 定義乙個用於建立物件的介面,讓子類決定例項化哪個類。工廠方法使乙個類的例項化延遲到子類。還以簡單工廠模式中的例子為例 將簡單工廠模式中的工廠 tv類提出來作為乙個公共的介面,而對應的各個功能類各建立乙個具體的工廠去實現這個介面。如下 inte ce ifactor...
簡單工廠 VS 工廠方法 VS 抽象工廠
說到設計模式,自然少不了簡單工廠模式,工廠方法和抽象工廠這三姐妹。它們之間可謂是各有所長,術業專攻啊!這篇部落格來簡單的梳理一下三者之間的關係。那麼工廠又是什麼意思呢?結合三者的特點,我認為可以這樣理解 工廠可以看做乙個特殊的類,在這個類中專門負責生產一系列產品 物件 的乙個集合就可以成為工廠。那麼...