1. 程式人生 > >設計模式_創建型模式_簡單工廠模式

設計模式_創建型模式_簡單工廠模式

9.png 類對象 代碼 客戶 調用 例如 src static ron

轉載自:http://blog.csdn.net/lovelion 作者:劉偉

簡單工廠模式並不屬於GoF 23個經典設計模式,但通常將它作為學習其他工廠模式的基礎,它的設計思想很簡單,其基本流程如下:

首先將需要創建的各種不同對象(例如各種不同的Chart對象)的相關代碼封裝到不同的類中,這些類稱為具體產品類

而將它們公共的代碼進行抽象和提取後封裝在一個抽象產品類中,每一個具體產品類都是抽象產品類的子類

然後提供一個工廠類用於創建各種產品,在工廠類中提供一個創建產品的工廠方法,該方法可以根據所傳入的參數不同

創建不同的具體產品對象;客戶端只需調用工廠類的工廠方法並傳入相應的參數即可得到一個產品對象。

簡單工廠模式(Simple Factory Pattern):定義一個工廠類,它可以根據參數的不同返回不同類的實例,

被創建的實例通常都具有共同的父類。

因為在簡單工廠模式中用於創建實例的方法是靜態(static)方法,因此簡單工廠模式又被稱為

靜態工廠方法(Static Factory Method)模式,它屬於類創建型模式。

簡單工廠模式的要點在於:當你需要什麽,只需要傳入一個正確的參數,就可以獲取你所需要的對象,

而無須知道其創建細節。簡單工廠模式結構比較簡單,其核心是工廠類的設計,其結構如圖1所示:

技術分享圖片

● Factory(工廠角色):工廠角色即工廠類,它是簡單工廠模式的核心,負責實現創建所有產品實例的內部邏輯

工廠類可以被外界直接調用,創建所需的產品對象;在工廠類中提供了靜態的工廠方法factoryMethod(),

它的返回類型為抽象產品類型Product。

● Product(抽象產品角色):它是工廠類所創建的所有對象的父類封裝了各種產品對象的公有方法

它的引入將提高系統的靈活性,使得在工廠類中只需定義一個通用的工廠方法,因為所有創建的具體產品對象都是其子類對象。

● ConcreteProduct(具體產品角色):它是簡單工廠模式的創建目標所有被創建的對象都充當這個角色的某個具體類的實例

每一個具體產品角色都繼承了抽象產品角色,需要實現在抽象產品中聲明的抽象方法。

在使用簡單工廠模式時,首先需要對產品類進行重構

,不能設計一個包羅萬象的產品類,而需根據實際情況設計一個產品層次結構,

將所有產品類公共的代碼移至抽象產品類並在抽象產品類中聲明一些抽象方法以供不同的具體產品類來實現,典型的抽象產品類代碼如下所示:

技術分享圖片

在具體產品類中實現了抽象產品類中聲明的抽象業務方法,不同的具體產品類可以提供不同的實現,典型的具體產品類代碼如下所示:

技術分享圖片

簡單工廠模式的核心是工廠類,在沒有工廠類之前,客戶端一般會使用new關鍵字來直接創建產品對象,

而在引入工廠類之後,客戶端可以通過工廠類來創建產品,在簡單工廠模式中,工廠類提供了一個靜態工廠方法供客戶端使用,

根據所傳入的參數不同可以創建不同的產品對象,典型的工廠類代碼如下所示:

技術分享圖片

在客戶端代碼中,我們通過調用工廠類的工廠方法即可得到產品對象,典型代碼如下所示:

技術分享圖片

設計模式_創建型模式_簡單工廠模式