在物件導向程式設計中,一般方法是用乙個new操作符產生乙個物件的例項。但是在一些情況下,用new操作符直接生成物件會帶來一些問題。首先,要使用new運算子建立乙個物件必須清楚所要建立的物件的類資訊,包括類名、建構函式等,而有時並不現實。其次許多態別的物件建立需要一系列的步驟,可能需要計算或取得物件的初始設定,選擇生成
哪個子物件例項,或在生成需要的物件之前必須生成一些輔助功能的物件。在這些情況下,新物件的建立就是乙個過程,而不是乙個簡單的操作。為輕鬆方便地完成複雜物件的建立,從而引入了
工廠模式。
簡單工廠模式又叫靜態工程方法模式,定義乙個factory靜態類,可以根據引數的不同返回不同類的例項,被建立的例項通常有共同的父類。
client通常不指定要建立的具體類,client將面向介面或抽象類進行編碼,讓factory類負責建立具體的型別。通常factory類有乙個返回抽象類或者介面的靜態方法。
client通常提供某種資訊讓factory類使用提供的資訊來確定建立並返回哪個子類。
將建立子類的責任抽象出來的好處是允許client完全無需考慮依賴類是如何建立的,這遵守依賴倒置原則(dependency inversion principle,dip)。
工廠模式另外乙個好處是把負責物件建立的**集中起來,如果需要修改物件生成方式,可以輕鬆定位並更新,而不會影響到依賴它的**。
◊ 實現了建立和使用分離;
◊ client
無需知道所建立的
具體類名,只需要知道具體
類所對應的引數。
◊ factory類集中了所有具體類的建立邏輯,職責過重。一旦需要新增新的具體類,則需要修改factory邏輯。這樣
違背了ocp(開放
-關閉原則)
。◊ 由於使用了static方法,造成factory無法形成基於繼承的結構。
結構圖
支付介面使用簡單工廠模式結構圖
簡單工廠模式 建立型模式
1 描述 簡單工廠模式描述了乙個類,它擁有乙個包含大量條件語句的構建方法,可根據方法的引數來選擇對何種產品進行初始化並將其返回。簡單工廠通常沒有子類,但當從乙個簡單工廠中抽取出子類後,它看上去更像經典的工廠方法模式了。2 結構圖 3 c 實現 include include 產品介面中將宣告所有具體...
建立型模式之簡單工廠模式
複習用,不適合初學。複習用,不適合初學。複習用,不適合初學。1.定義 factory pattern 簡單工廠模式又稱為靜態 static 工廠模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。2.角色 f...
建立型模式之簡單工廠模式
寫在前面 閱讀本文之前你需要知道 1.連線基本的uml類圖結構 2.類關係 簡單工廠模式並不屬於gof的23個經典模式,但通常把它作為學習其他工廠模式的基礎,它的設計思想比較簡單 首先將需要建立的各種不同物件的相關 封裝到不同的類中,這些類稱為具體產品類,而將它們公共的 進行抽象和提取後封裝到乙個抽...