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產...