工廠方法及其設計原則

2021-07-06 05:16:38 字數 1640 閱讀 6500

一、第乙個設計模式原則:按介面程式設計

inte***ce ialpha 介面名

class alpha 實現介面

variable usealpha 例項化新的

alpha

第二個設計模式原則:優先選擇物件組合而不是類繼承

在大程式當中,組合可以避免維護多個繼承層次上的各個子類,  而且還可以避免可能導致的錯誤,例如:父類的乙個改變會逐級向下傳遞到子類實現,這可能會影響子類使用的某個演算法。

因此要避免使用繼承形成一長串子類、孫子類、曾子類等,設計模式方法建議使用淺繼承。

二、工廠方法:通過乙個工廠(creator

)例項化物件,從而將例項化過程與請求者分離。

內容1.、

提供獲取某個物件例項的乙個介面,同時使呼叫**避免確定例項化基類的步驟

; 2、

工廠模式 實際上就是建立乙個統一的類例項化的函式介面。統一呼叫,統一控制

; 3、

工廠模式是php專案開發中,最常用的設計模式,一般會配合單例模式一起使用,來載入php類庫中的類。

應用場景

1. 我們擁有乙個json類,string類,xml類。

2. 如果我們不使用工廠方式例項化這些類,則需要每乙個類都需要new一遍,過程不可控,類多了,到處都是new的身影

3. 引進工廠模式,通過工廠統一建立物件例項。

//如果你希望例項化物件的子類可能發生變化就使用工廠模式

例項**

1. <?php  

2. //工廠模式 提供獲取某個物件例項的乙個介面,同時使呼叫**避免確定例項化基類的步驟

3. //字串類

4. class string   

6. }  

7. //json類

8. class json   

10. }  

11. 

//xml類

12. 

class xml   

14. }  

15. 

//工廠類

16. 

class factory   

20. }  

21. factory::create("json"); //獲取json物件

工廠的工作

第一步是建立工廠:creator介面(

是模式中的第乙個參與者,使用乙個抽象類作為

creator介面)

abstract class creator

{       //構建並返回由乙個按

product

介面實現的產品物件

protected abstract function factorymethod();//返回乙個產品

public function startfactory(){

$mfg = $this->factorymethod();

return $mfg;//返回乙個產品(

product

引數化工廠方法設計模式與一般的工廠方法設計模式的主要區別之一是客戶包含工廠和產品的引用,在引數化請求中,client

必須指定產品,而不知是好產品工廠。

使用設計模式的一大好處就是可以很容易地對類做出改變,而不會破壞更大的程式,之所以能夠做出改變,在於保持介面不變,只改變其內容。

設計模式 工廠方法模式及其應用

工廠方法模式 是23中基本設計模式之一,它定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個。工廠方法讓類的例項化延遲到了子類。注 這裡所謂的 決定 並不是指模式允許子類本身在執行時做決定,而是在編寫建立者類時,不需要知道實際建立的產品是哪乙個,選擇了使用哪個子類,就等於決定了建立的產品是什...

設計模式 抽象工廠方法和工廠方法

工廠方法模式定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到子類。抽象工廠模式提供乙個介面,用於建立相關或依賴物件的家族,而不需要明確指定具體類。從pizzastore的角度,來理解上面的這個類圖 抽象工廠的任務是,定義乙個建立一組產品的介面。這個介面內的每個方...

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

簡介 工廠方法模式分為 簡單工廠模式 工廠方法模式 抽象工廠方法模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法 static factory method 模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的實 uml圖示例 public class ...