php工廠方法模式

2021-07-24 09:03:09 字數 1922 閱讀 3932

clevercode最近在看工廠方法模式。

定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,工廠方法使乙個類的例項化延遲到其子類。

2.1 抽象工廠(creator)角色:是工廠方法模式的核心,與應用程式無關。任何在模式中建立的物件的工廠類必須實現這個介面。

2.2 具體工廠(concrete creator)角色:這是實現抽象工廠介面的具體工廠類,包含與應用程式密切相關的邏輯,並且受到應用程式呼叫以建立產品物件。在上圖中有兩個這樣的角色:bulbcreator與tubecreator。

2.3 抽象產品(product)角色:工廠方法模式所建立的物件的超型別,也就是產品物件的共同父類或共同擁有的介面。在上圖中,這個角色是light。

2.4 具體產品(concrete product)角色:這個角色實現了抽象產品角色所定義的介面。某具體產品有專門的具體工廠建立,它們之間往往一一對應。

4.1 加法減法引用工廠方法

4.2 類結構圖

4.3 php原始碼設計

<?php 

/** * 工廠方法。由於簡單工廠違背了開發-封閉原則

* 工廠方法。將這個改變放到了客戶端

*/// 運算抽象類

class operation

/**

* 獲取成員a

* * @return double 數字

*/

public function getnumbera()

/**

* 設定成員b

* * @param double $num 數字

* @return void

*/

public function setnumberb($num)

/**

* 獲取成員b

* * @return double 數字

*/

public function getnumberb()

/**

* 獲取運算結果

* * @return double 數字

*/

public function getresult()

} /*}}}*/

// 加法類

class operationadd extends operation

} /*}}}*/

// 減法類

class operationsub extends operation

} /*}}}*/

//運算工廠

inte***ce ifactory

/*}}}*/

//加法工廠

class addfactory implements ifactory

}/*}}}*/

//減法工廠

class subfactory implements ifactory

}/*}}}*/

class client

}/*}}}*/

client::main($argv);

?>

4.4 結果展示

工廠方法模式 工廠方法模式

工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...

PHP設計模式 工廠方法

宣告 本系列部落格參考資料 大話設計模式 作者程杰。前面我們介紹了簡單工廠,今天我們繼續學習另外乙個工廠 工廠方法。具體案例 請mm去麥當勞吃漢堡,不同的mm有不同的口味,要每個都記住是一件煩人的事情,我們一般採用factorymethod模式,帶著mm到服務員那兒,說 要乙個漢堡 具體要什麼樣的漢...

工廠方法模式 工廠方法模式 二

工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...