披薩店新推出了點單系統,披薩需要通過不同的製作,相同的烘焙,裁剪等工序才能完成。披薩的種類實在太多了,在構造披薩例項時,光是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 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式...