設計模式之 原廠模式三姐妹

來源:互聯網
上載者:User
簡單原廠模式:

當需要一個相同的介面,但裡面完成內容不同時,就可以用一個工廠來產生其中的多個類的一個執行個體。 通俗說 :

用來生產同一等級結構中的任意產品(不支援增加新產品)

 

 在於簡單工廠類中包含了必要的邏輯判斷,根據用戶端的選擇條件動態執行個體化相關的類,對於用戶端來說,去除了與具體產品的依賴。

缺點:當需要增加新產品時,需要修改工廠類,不符合開放封閉原則。

 =====================================================

Factory 方法模式:

 定義一個用於建立對象的介面,讓子類決定執行個體化哪一個類。工廠方發使用一個類的執行個體化延遲到其子類。

用來生產同一等級結構中的固定產品(支援增加任意產品)

步驟:

1 一個工廠建立一個產品,所有的具體工廠繼承自一個抽象工廠。

2 用戶端先建立不同產品工廠,再由工廠建立具體產品,

3 產品的建立邏輯分散在每個具體工廠中。用戶端只依賴於抽象工廠與抽象產品,不依賴於具體的工廠與具體產品增。加新產品是需要增加工廠類和產品類,符合OCP原則。

 

原廠模式中,重要的是工廠類,不是產品類。產品類可以是多種形式的。

++++++++++++++++++++

Factory 方法與簡單工廠對比

 1  Factory 方法  除將產品抽象出一個介面以便實現多態,還將不同的工廠進行細分,統一繼承自一個介面,將簡單工廠中的判斷移至用戶端。實現了開-閉原則。

2 用戶端若使用一個工廠對象生產多個產品,而簡單工廠需要修改每個生產函數的參數,Factory 方法模式只需修改初始化語句。

 

==============================================

抽象工廠

提供一個建立一系列相關或相互依賴對象的介面,而無需制定他們具體的類

用來生產不同產品族的全部產品,易於交換產品系列。(對於增加新產品,無能為力,支援增加產品族)。

 

一個產品族是不同系列的產品組合,產品的建立的邏輯分在每個具體的工廠中。所有的具體工廠繼承自同一個抽象工廠。用戶端建立不同產品族的工廠,產品族的工廠建立具體的產品,但對用戶端是不可見的。怎講愛新產品族時,需要增加具體工廠類。符合OCP原則,增加新產品時,需要修改具體工廠類和增加產品類。符合OCP原則。

 =============================

小結

按照順序,是抽象程度依次加深。簡單原廠模式最易理解。當需要一個相同的介面,但裡面完成內容不同的時候,就可以用一個工廠來產生其中多個類的一個執行個體。它最明顯的是有一個工廠類來產生介面執行個體。

 

Factory 方法模式是簡單工廠的抽象加深,它不需要一個獨立來建立對象。而是通過子類延遲建立需要的對象。如在汽車的對象裡麵包括了發動機對象,但發動機對象不是由特定的工廠類來產生,而是取決於到底是什麼樣的汽車,不同的汽車有不同的發動機對象,這就是交給了子類來完成。

而抽象工廠則有點類似 簡單原廠模式 + Factory 方法模式。 它的好處是通過抽象類別來隔離具體類,並通過唯一入口來決定產生什麼具體類。我們使用它的前提條件是一系列相似的類

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.