1. 程式人生 > >設計模式(建立型模式)——工廠三兄弟

設計模式(建立型模式)——工廠三兄弟

目錄

 

建立型模式概述

一、建立型設計模式:

二、主導思想是:

三、我的理解是:

工廠三兄弟概述

一、工廠三兄弟:

二、理解工廠三兄弟前奏

三、 產品等級結構和產品族的區分如圖:

抽象工廠模式

一、抽象工廠模式

二、解析

三、優點:

四、缺點:

工廠方法

一、工廠方法

二、解析

三、優點

四、缺點

簡單工廠模式

一、簡單工廠

二、解析

三、優點

四、缺點


建立型模式概述

建立型模式:是處理物件建立的設計模式,他旨在將系統與他的物件建立、結合、表示的方式分離,這些設計模式在物件建立的型別、主體、方式、時間等方面提高了系統的系統的靈活性。

 

一、建立型設計模式:

1、抽象工廠模式

2、工廠方法模式

3、建造者模式

4、原型模式

5、單例模式

 

二、主導思想是:

1、將系統使用的具體類封裝起來;

2、隱藏這些具體類的例項建立和結合的方式。

 

三、我的理解是:

建立模式就是以某種方式控制物件的建立來解決問題

 

工廠三兄弟概述

一、工廠三兄弟:

簡單工廠模式、工廠方法模式、抽象工廠模式

 

二、理解工廠三兄弟前奏

1、產品等級結構:產品的等級結構即產品的繼承結構,例如:一個抽象類是空調,其子類有格力空調、美的空調、大金空調,抽象的父類空調與各個品牌空調間構成了一個產品等級結構。

 

2、產品族:產品族是指由同一個工廠生產的,位於不同產品等級結構中的一組產品,例如:美的電器生產的美的空調、美的電飯鍋、美的豆漿機,他們都是美的生產的產品。

 

三、 產品等級結構和產品族的區分如圖:

 

抽象工廠模式

一、抽象工廠模式

又叫物件建立型模式或Kit模式,是提供了一個建立一系列或相關依賴物件的介面,而無需指定他們的具體類的模式。(如下圖所示)

 

二、解析

1、抽象工廠接口裡麵包含了所有產品建立的抽象方法;

2、具體的工廠建立具有特定實現的產品物件;

3、它就是多個產品結構的經典體現,例如:美的電器生產的美的空調、美的電飯鍋、美的豆漿機,他們都是美的生產的產品;

4、抽象工廠就好比抽象的美的工廠、格力工廠,具體工廠就好比美的空調工廠、格力空調工廠、美的電飯鍋工廠、格力電飯鍋工廠、美的豆漿機工廠、格力豆漿機工廠;

5、抽象產品就好比空調、電飯鍋、豆漿機;

6、具體的產品就好比美的空調、格力空調、美的電飯鍋、格力電飯鍋、美的豆漿機、格力豆漿機。

 

三、優點:

1、抽象工廠模式隔離了具體類的生成;

2、可以保證客戶端始終使用同一個產品族中的物件;

3、增加新的具體工廠和產品族都很方便,符合開閉原則。

 

四、缺點:

1、難以擴充套件抽象工廠來生產新種類的產品;

2、增加新產品等級結構麻煩。

 

工廠方法

一、工廠方法

又稱虛擬構造器模式或多型工廠模式,它是一個用於建立物件的介面,讓子類決定例項化哪個類,工廠模式使一個類的例項化延遲到其子類。工廠方法由抽象工廠退化而來。(如下圖所示)

二、解析

1、工廠方法是一個產品等級結構;

2、是抽象工廠的退化版;

3、抽象工廠類就好比抽象的空調工廠;具體的工廠好比格力空調廠、美的空調廠;抽象的產品好比空調;具體的產品類好比格力空調、美的空調。

 

三、優點

工廠方法模式的主要優點是增加新的產品類時無須修改現有系統,並封裝了產品物件的建立細節,系統具有良好的靈活性和可擴充套件性;

 

四、缺點

其缺點在於增加新產品的同時需要增加新的工廠,導致系統類的個數成對增加,在一定程度上增加了系統的複雜性。

 

簡單工廠模式

一、簡單工廠

又稱為靜態工廠方法(Static Factory Method)模式,它屬於類建立型模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義一個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。(如下圖所示)

二、解析

1、將物件的建立和物件本身業務處理分離可以降低系統的耦合度,使得兩者修改起來都相對容易。

2、在呼叫工廠類的工廠方法時,由於工廠方法是靜態方法,使用起來很方便,可通過類名直接呼叫,而且只需要傳入一個簡單的引數即可,在實際開發中,還可以在呼叫時將所傳入的引數儲存在XML等格式的配置檔案中,修改引數時無須修改任何Java原始碼。

3、簡單工廠模式最大的問題在於工廠類的職責相對過重,增加新的產品需要修改工廠類的判斷邏輯,這一點與開閉原則是相違背的。

4、簡單工廠模式的要點在於:當你需要什麼,只需要傳入一個正確的引數,就可以獲取你所需要的物件,而無須知道其建立細節。 (如下圖)

5.舉例:某電視機廠專為各知名電視機品牌代工生產各類電視機,當需要海爾牌電視機時只需要在呼叫該工廠的工廠方法時傳入引數“Haier”,需要海信電視機時只需要傳入引數“Hisense”,工廠可以根據傳入的不同引數返回不同品牌的電視機。現使用簡單工廠模式來模擬該電視機工廠的生產過程。

 

三、優點

1、工廠類含有必要的判斷邏輯,可以決定在什麼時候建立哪一個產品類的例項,客戶端可以免除直接建立產品物件的責任,而僅僅“消費”產品;簡單工廠模式通過這種做法實現了對責任的分割,它提供了專門的工廠類用於建立物件。

2、客戶端無須知道所建立的具體產品類的類名,只需要知道具體產品類所對應的引數即可,對於一些複雜的類名,通過簡單工廠模式可以減少使用者的記憶量。

3、通過引入配置檔案,可以在不修改任何客戶端程式碼的情況下更換和增加新的具體產品類,在一定程度上提高了系統的靈活性。

 

四、缺點

1、由於工廠類集中了所有產品建立邏輯,一旦不能正常工作,整個系統都要受到影響。

2、使用簡單工廠模式將會增加系統中類的個數,在一定程式上增加了系統的複雜度和理解難度。

3、系統擴充套件困難,一旦新增新產品就不得不修改工廠邏輯,在產品型別較多時,有可能造成工廠邏輯過於複雜,不利於系統的擴充套件和維護。

4、簡單工廠模式由於使用了靜態工廠方法,造成工廠角色無法形成基於繼承的等級結構。