深入淺出設計模式 工廠模式

2021-09-30 01:50:24 字數 1534 閱讀 1762

披薩店新推出了點單系統,披薩需要通過不同的製作,相同的烘焙,裁剪等工序才能完成。披薩的種類實在太多了,在構造披薩例項時,光是if else 語句就長的可怕,修改與維護更令人頭疼。

披薩子類繼承實現相同的基類,通過基類呼叫不同的子類,使得**具有一定的彈性,將構造子類放入業務**,導致了子類與業務**的耦合,令修改與更新變得更加困難。

簡單工廠模式可以說不是設計模式,更像一種設計習慣,將經常變化的子類構造封裝為乙個工廠類,通過工廠類構造披薩子類,但子類變化時只需改變工廠類。

優點: 1、乙個呼叫者想建立乙個物件,只要知道其名稱就可以了。 2、擴充套件性高,如果想增加乙個產品,只要擴充套件乙個工廠類就可以。 3、遮蔽產品的具體實現,呼叫者只關心產品的介面。

缺點:每次增加乙個產品時,都需要增加乙個具體類和物件實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的複雜度,同時也增加了系統具體類的依賴。這並不是什麼好事。

涉及的設計原則:

封裝變化

![在這裡插入描述](

披薩店越做越大,我們開了許多披薩店,不同地區的披薩店,風味並不相同,每家店都有自己的特色,簡單工廠模式不能滿足變化的需求了。

披薩與披薩店的關聯,就是產品類與工廠的關聯,工廠類決定了產品型別,就像披薩店決定了披薩的風味。

定義乙個建立物件的介面,讓其子類自己決定例項化哪乙個工廠類,工廠模式使其建立過程延遲到子類進行。

涉及的設計原則:

依賴倒置原則

高層元件與底層元件都依賴於抽象

為了保證披薩的味道,必須保證原材料的品質,不同地區採用不同的高品質原材料(因地制宜)。每個披薩店都有自己的一組原材料配置。

工廠類必須通過乙個建立一系列相關或相互依賴物件的介面。

提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。

優點:當乙個產品族中的多個物件被設計成一起工作時,它能保證客戶端始終只使用同乙個產品族中的物件。

缺點:產品族擴充套件非常困難,要增加乙個系列的某一產品,既要在抽象的 creator 裡加**,又要在具體的裡面加**。

深入淺出設計模式(二) 工廠模式

簡單工廠模式 factory pattern 又稱為靜態工廠方法 static factory method 它屬於建立型模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。比如有乙個電腦商,目前生產聯想電腦...

深入淺出之工廠模式

首先說說簡單工廠模式,我用現實中的汽車工廠舉例子,首先有個汽車類的介面叫做car,裡面有個開車的方法叫做drive 然後有個吉利車的類叫做jili,實現了car的介面,還有個奇瑞車的類叫做qirui,也實現了car的介面 因為都是車嘛,當然能開了 inte ce carelse if qirui e...

深入淺出設計模式 模板模式

設計模式是程式設計師必須掌握的技能,熟練應用各種設計模式,不僅可以提公升我們的編碼能力,也可以使得我們的編碼更美觀。在這裡我們來講解一下模板模式。模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式...