1. 程式人生 > >【設計模式】C#版三大工廠之簡單工廠、工廠方法與抽象工廠

【設計模式】C#版三大工廠之簡單工廠、工廠方法與抽象工廠

引言

        簡單工廠、工廠方法、抽象工廠都屬於設計模式中的建立型模式。其主要功能都是幫助我們把物件的例項化部分抽象取了出來,優化了系統的架構,並且增強了系統的擴充套件性。此篇部落格是筆者對學完這三種模式之後一個小小的總結

簡單工廠

        簡單工廠模式的工廠類一般是使用靜態方法,通過接收的引數不同來返回不同的物件例項。不修改程式碼的話,是無法擴充套件的


         優點:客戶端可以免除直接建立產品物件的責任,而僅僅是“消費”產品。簡單工廠模式通過這種做法實現了對責任的分割

         缺點:由於工廠類集中了所有例項的建立邏輯,違反了高內聚責任分配原則,將全部建立邏輯集中到了一個工廠類中;它所能建立的類只能是事先考慮到的,如果需要新增新的類,則就需要改變工廠類了

工廠方法

        工廠方法是針對每一種產品提供一個工廠類。通過不同的工廠例項來建立不同的產品例項。在同一等級結構中,支援增加任意產品


        優點:允許系統在不修改具體工廠角色的情況下引進新產品

        缺點:由於每加一個產品,就需要加一個產品工廠的類,增加了額外的開發量


抽象工廠

      抽象工廠是應對產品族概念的。應對產品族概念而生,增加新的產品線很容易,但是無法增加新的產品。比如,每個汽車公司可能要同時生產轎車、貨車、客車,那麼每一個工廠都要有建立轎車、貨車和客車的方法


       優點:向客戶端提供一個介面,使得客戶端在不必指定產品具體型別的情況下,建立多個產品族中的產品物件

       缺點:增加新的產品等級結構很複雜,需要修改抽象工廠和所有的具體工廠類,對“開閉原則”的支援呈現傾斜性

簡單工廠與工廠方法

        工廠方法模式是簡單工廠模式的進一步抽象和推廣,由於使用了多型性,工廠方法模式保持了簡單工廠模式的優點,並且克服了它的缺點,完全符合開閉原則

工廠方法與抽象工廠

1、工廠方法

       一個抽象產品類,可以派生出多個具體產品類。一個抽象工廠類,可以派生出多個具體工廠類。每個具體工廠類只能建立一個具體產品類的例項

2、抽象工廠

        多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。一個抽象工廠類,可以派生出多個具體工廠類。每個具體工廠類可以建立多個具體產品類的例項

3、工廠方法與抽象工廠的區別

        工廠方法模式只有一個抽象產品類,而抽象工廠模式有多個。工廠方法模式的具體工廠類只能建立一個具體產品類的例項,而抽象工廠模式可以建立多個

結語

        關於三大工廠模式的程式碼在這裡我就不過多的展示了,晚上有很多初級的教程,大多數都差不多,有需要的可以自行上網搜尋。筆者目前只是設計模式的初學者,對於在專案中如何應用這些模式還不是太瞭解,在後期會進行深入研究,

        本篇文章只是對比著總結了一下三大工廠模式,對於三大工廠模式有一個清晰的認識。通過UML圖的變化,也可以看出從簡單工廠模式到工廠方法模式再到抽象工廠模式的變化

       本文只是對基礎知識做一個小小的總結,不深究。如有不同,見解歡迎指正

       本文所有內容均為作者原創,如有轉載,請註明出處


相關推薦

設計模式C#三大工廠簡單工廠工廠方法抽象工廠

引言         簡單工廠、工廠方法、抽象工廠都屬於設計模式中的建立型模式。其主要功能都是幫助我們把物件的例項化部分抽象取了出來,優化了系統的架構,並且增強了系統的擴充套件性。此篇部落格是筆者對學完這三種模式之後一個小小的總結 簡單工廠         簡單工廠模式的工

C#.NET:高階程式設計匿名類匿名方法擴充套件方法

 [文中插圖丟失,推薦檢視原文]!important 開篇:在上一篇中,我們瞭解了自動屬性、隱式型別、自動初始化器等所謂的新語法,這一篇我們繼續征程,看看匿名類、匿名方法以及常用的擴充套件方法。雖然,都是很常見的東西,但是未必我們都明白其中蘊含的奧妙。所以,跟著本篇的

設計模式——三大工廠模式

       學習大話設計模式也有一段時間了,但是還沒來得及總結,不是不想總結,而是一看這本書就剎不住閘了,大話設計模式是作者通過故事講述程式如何設計的方法集。書中的主人公小菜和大鳥是全書的核心人物,

設計模式簡單工廠模式工廠方法模式

產生 for plm nbsp osc rbm play stp mage > 簡單工廠模式 顧名思義,此模式的設計結構是簡單的,核心是生產對象。 一般來說,運用工廠模式生產的對象應該是構建對象的過程比較復雜的,獲取構建對象的過程在日後可能發生變更的。 簡單工廠

設計模式簡單工廠模式

jsb 工廠模式 tle virt -m 虛函數 ios efault def 以面向對象的思想和簡單工廠模式。寫一個C++計算器程序,代碼例如以下: #include <iostream> using namespace std;

設計模式2.工廠設計模式(生產者消費者問題)

catch 設計 star 機制 print boolean 結果 try producer 生產者消費者模型 與 多線程 生產者、消費者在同一時間內共用同一存儲空間, 生產者向共享空間生產數據, 而消費者取走共享的數據。、 經典問題描述: 生產者不斷交替地生產兩組數據“姓

設計模式 抽象工廠模式 Abstract Factory Pattern

輸出結果 決定 操作 靜態工廠模式 void inter excel erp fault 簡單工廠模式是一個工廠類根據工廠方法的參數創建不出不同的產品, 工廠方法模式是每一個產品都有一個一一對應的工廠負責創建該產品。那麽今天要講的抽象工廠模式是一個工廠能夠產生關聯的一系列產

設計模式簡單工廠模式 |工廠方法模式 |抽象工廠模式

簡單工廠模式 由三種角色組成: 1、工廠類角色:是簡單工廠模式的核心,含有一定的商業邏輯和判斷邏輯。 2、抽象產品角色:一般是具體產品繼承的父類或者實現的介面。 3、具體產品角色:工廠類所建立的物件就是此角色的例項。 用一個單獨的類來做這個創在例項的過程,這就

設計模式簡單工廠模式(Simple Factory)

思想 簡單工廠模式,因為用於建立例項的方法是靜態的,又稱為靜態工廠方法模式。在該模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義一個類來負責建立其他類的例項,被建立的例項通常都具有相同的父類。 結構 組成(角色) 作用

設計模式(一)-簡單工廠模式和策略模式

前言 最近開始和春哥,張鐸 ,銀平討論設計模式,成立了一個小菜變大鳥的小組,每天討論一個模式,並且把這個模式搞懂,每學一個新的模式,再回顧一下之前學的模式。這兩天學了簡單工廠模式和策略模式,發現兩個模式有很多相同之處,下面用商場促銷的例子來對兩個模式總結一下。 簡單工廠模式 1.

設計模式——抽象工廠模式

【抽象工廠模式】 抽象工廠模式是圍繞一個超級工廠建立其他工廠,該超級工廠又稱為其他工廠的工廠。這種型別的設計模式屬於建立型模型,它提供了一種建立物件的最佳方式 在抽象工廠模式中,介面是負責建立一個相關物件的工廠,不需要顯式的指定他們的類。每個生成的工廠都能按照工廠模式

設計模式抽象工廠模式

模式定義 抽象工廠模式提供一個介面,用於建立相關或依賴物件的家族,而不需要明確指定具體類。 下圖是該模式的類圖: 一個生動的例子 工廠介面: public interface PizzaIngredientFactory { public Dough createDo

設計模式-簡單工廠模式

一、介紹 簡單工廠模式我們可以理解為負責生產物件的一個類,我們平常程式設計中,當時用"new"關鍵字建立一個物件時,此時該類就依賴與這個物件,也就是他們之間的耦合度高,當需求變化時,我們就不得不去修改此類的原始碼,此時我們可以運用面向物件(OO)的很重要的原則去解決這一問題,該原則就是——封

設計模式單例模式三個工廠模式

interface IFactory { Operation CreateOperation(); } class AddFactory : IFactory { public Operation CreateOperation()

設計模式例項 - (Super Link) Serial - basic

(Super Link) Serial 版 - basic 結合了設計模式實現的 Serial 程式(用於實現 web serial(網頁版串列埠除錯助手)) 用到: 單例模式 (及其變體) 觀察者模式 狀態模式 (Su

設計模式簡單工廠工廠方法抽象工廠的區別

前言 為什麼會出現工廠,工廠方法與簡單工廠還有抽象工廠到底有啥區別,什麼時候能用到這些呢,如果你對於這些不是很清晰,那麼你可以看看小編的這篇部落格! 這裡所有的類圖均用基本演算法為例子,這樣會有明顯的對比! 一、簡單工廠模式 1、我們在例項化物件的時候通

設計模式HeadFirst設計模式(四):工廠模式

     設計模式要求我們不應該針對實現程式設計,是為了降低耦合度,提高可維護性。當程式中出現“new”的時候,就證明程式在例項化一個具體類,所以用的是實現,而不是介面。如果程式碼綁著具體的類會導致程

設計模式簡單工廠模式——以一個簡單的計算器為例

本文內容參考自《大話設計模式》(程傑 著) 注:以下程式碼為C#實現 1.拙劣的程式碼 class Program { static void Main(string[] args) { Console.

設計模式簡單工廠模式工廠方法模式詳細解讀

1.前言  設計模式,各具特色,今天在此總結一下常見模式中 簡單工廠模式與工廠方法模式的區別與聯絡 2.兩種模式概要    1. 簡單工廠模式     2. 工廠方法模式   工廠方法模式又稱

設計模式簡單工廠模式

相關文章 1.簡單工廠模式簡介 定義 簡單工廠模式屬於建立型模式又叫做靜態工廠方法模式,是由一個工廠物件決定創建出哪一種產品類的例項。 簡單工廠模式結構圖 Factory:工廠類,簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯。