在學習過工廠方法之後,我所了解的工廠方法基本是去建立乙個物件,
例如在玩遊戲的時候,建立了乙個關羽英雄,乙個張飛英雄這樣。
但是有時候程式設計時可能需要建立一組物件,這就出現了第二種建立型設計模式--
抽象工廠方法(abstractfactory)。
比方說,我在建立關羽的時候手上拿著青龍偃月刀,騎著赤兔馬。
建立劉備的時候手上拿著雌雄雙劍,騎著的盧馬。
那麼他們的兵器就需要乙個類去實現,馬又需要另外乙個類去實現。
人物 + 兵器 +坐騎 就成了乙個組合。
最後通過乙個抽象工廠的模式去實現組合建立。
記錄**如下:
<?php
/** hero
* 定義乙個英雄介面
*/
inte***ce hero
/** guanyu
* 關羽英雄類
*/
class guanyu implements hero
} /** liubei
* 劉備英雄類
*/
class liubei implements hero
} /** weapon
* 定義乙個兵器介面
*/
inte***ce weapon
/** guanyuweapon
* 青龍偃月刀的類
*/
class guanyuweapon implements weapon
} /** liubeiweapon
* 雌雄雙劍的類
*/
class liubeiweapon implements weapon
} /** horse
* 定義乙個坐騎介面
*/
inte***ce horse
/** chitu
* 赤兔馬類
*/
class chitu implements horse
} /** dilu
* 的盧馬類
*/
class dilu implements horse
}
/** abstractfactory
* 抽象工廠介面 為子類建立標準
* loadinghero 載入人物類方法
* loadingweapon 載入**類方法
* loadinghorse 載入坐騎類方法
*/
inte***ce abstractfactory
/** gfactory
* 關羽英雄建立工廠類 用於客戶端呼叫
*/
class gfactory implements abstractfactory
function loadingweapon()
function loadinghorse()
}
/** lfactory
* 劉備英雄建立工廠類 用於客戶端呼叫
*/
class lfactory implements abstractfactory
function loadingweapon()
function loadinghorse()
}
<?php
// 抽象工廠模式 index.php
header("content-type:text/html;charset=utf-8");
require_once "abstractfactory.php";
echo "-----------------建立第乙個英雄-----------------
";
$gy = new gfactory(); // 呼叫第乙個英雄的工廠
// 載入各自的建立方法
$gyhero = $gy->loadinghero();
$gyweapon = $gy->loadingweapon();
$gyhorse = $gy->loadinghorse();
// 生成加入戰場
$gyhero->createhero();
$gyweapon->createweapon();
$gyhorse->createhorse();
echo "
";
echo "-----------------建立第二個英雄-----------------
";
$lb = new lfactory(); // 呼叫第乙個英雄的工廠
// 載入各自的建立方法
$lbhero = $lb->loadinghero();
$lbweapon = $lb->loadingweapon();
$lbhorse = $lb->loadinghorse();
// 生成加入戰場
$lbhero->createhero();
$lbweapon->createweapon();
$lbhorse->createhorse();
輸出的結果:
-----------------建立第乙個英雄-----------------
關羽加入戰場-->手持青龍偃月刀-->腳蹬赤兔馬。
-----------------建立第二個英雄-----------------
劉備加入戰場-->手持雌雄雙劍-->腳蹬的盧馬。
PHP設計模式 抽象工廠
宣告 本系列部落格參考資料 大話設計模式 作者程杰。前面我們介紹了簡單工廠和工廠方法設計模式,今天我們學習最後乙個工廠 抽象工廠。案例 追mm少不了請吃飯了,去麥當勞,只管向服務員說 兩個b 就行了。麥當勞就是b 的abstractfactory,b 裡含有漢堡,雞翅和飲料.麥當勞或肯德基會根據b ...
PHP 設計模式 抽象工廠
抽象工廠模式 abstract factory pattern 是圍繞乙個超級工廠建立其他工廠。該超級工廠又稱為其他工廠的工廠。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指定它們的類。每個生成的工廠都能按照工廠模式...
PHP設計模式 工廠模式之抽象工廠模式
abstract class 2 建立ttd 抽象類 ttd 抽象類 class ttdencoder abstract class ttdencoder 3 建立contact 抽象類 contact 抽象類 class contactencoder abstract class contacte...