PHP設計模式 抽象工廠

2021-08-18 23:05:59 字數 2865 閱讀 2522

在學習過工廠方法之後,我所了解的工廠方法基本是去建立乙個物件,

例如在玩遊戲的時候,建立了乙個關羽英雄,乙個張飛英雄這樣。

但是有時候程式設計時可能需要建立一組物件,這就出現了第二種建立型設計模式--

抽象工廠方法(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...