PHP 設計模式 抽象工廠

2021-10-10 05:06:39 字數 2672 閱讀 5925

<?php

/** * 抽象工廠模式(abstract factory pattern)是圍繞乙個超級工廠建立其他工廠。該超級工廠又稱為其他工廠的工廠。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。

* 在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指定它們的類。每個生成的工廠都能按照工廠模式提供物件。

* * 主要解決:主要解決介面選擇的問題。

* */

/* 為形狀建立乙個介面 */

/** * inte***ce shape 形狀

* 建立乙個介面。

*/inte***ce

shape

/* 建立實現介面的實體類 */

/** * class rectangle 矩形

*/class

rectangle

implements

shape

}/**

* class square 正方形

*/class

square

implements

shape

}/**

* class circle 圓形

*/class

circle

implements

shape

}/* 為顏色建立乙個介面 */

inte***ce

color

/* 建立實現介面的實體類 */

/** * class red

*/class

redimplements

color

}/**

* class green

*/class

green

implements

color

}/**

* class blue

*/class

blue

implements

color

}/**

* 為 color 和 shape 物件建立抽象類來獲取工廠

* class abstractfactory

*/abstract

class

abstractfactory

class

shapefactory

extends

abstractfactory

return

$shape;}

public

function

getcolor

($colortype)}

class

colo***ctory

extends

abstractfactory

return

$color;}

public

function

getshape

($shapetype)}

/** * 建立乙個工廠創造器/生成器類,通過傳遞形狀或顏色資訊來獲取工廠

* class factoryproducer

*/class

factoryproducer}}

$shapefactory

= factoryproducer:

:getfactory

(\factoryproducer::

shape);

$colo***ctory

= factoryproducer:

:getfactory

(\factoryproducer::

color);

$shape1

=$shapefactory

->

getshape

(\shapefactory::

circle);

$shape2

=$shapefactory

->

getshape

(\shapefactory::

rectangle);

$shape3

=$shapefactory

->

getshape

(\shapefactory::

square);

$shape1

->

draw()

;$shape2

->

draw()

;$shape3

->

draw()

;$color1

=$colo***ctory

->

getcolor

(\colo***ctory::

red)

;$color2

=$colo***ctory

->

getcolor

(\colo***ctory::

green);

$color3

=$colo***ctory

->

getcolor

(\colo***ctory::

blue);

$color1

->

fill()

;$color2

->

fill()

;$color3

->

fill()

;

PHP設計模式 抽象工廠

宣告 本系列部落格參考資料 大話設計模式 作者程杰。前面我們介紹了簡單工廠和工廠方法設計模式,今天我們學習最後乙個工廠 抽象工廠。案例 追mm少不了請吃飯了,去麥當勞,只管向服務員說 兩個b 就行了。麥當勞就是b 的abstractfactory,b 裡含有漢堡,雞翅和飲料.麥當勞或肯德基會根據b ...

PHP設計模式 抽象工廠

在學習過工廠方法之後,我所了解的工廠方法基本是去建立乙個物件,例如在玩遊戲的時候,建立了乙個關羽英雄,乙個張飛英雄這樣。但是有時候程式設計時可能需要建立一組物件,這就出現了第二種建立型設計模式 抽象工廠方法 abstractfactory 比方說,我在建立關羽的時候手上拿著青龍偃月刀,騎著赤兔馬。建...

PHP設計模式 工廠模式之抽象工廠模式

abstract class 2 建立ttd 抽象類 ttd 抽象類 class ttdencoder abstract class ttdencoder 3 建立contact 抽象類 contact 抽象類 class contactencoder abstract class contacte...