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

2021-10-22 23:58:33 字數 3470 閱讀 7669

/**

*/abstract

class

2、建立ttd 抽象類

/**

* ttd 抽象類

* class ttdencoder

*/abstract

class

ttdencoder

3、建立contact 抽象類

/**

* contact 抽象類

* class contactencoder

*/abstract

class

contactencoder

/**

*/class

extends

}

5、建立bloggscal ttd 格式處理類

/**

* bloggscal ttd 格式處理類

* class bloggsttdencoder

*/class

bloggsttdencoder

extends

ttdencoder

}

6、建立bloggscal contact 格式處理類

/**

* bloggscal contact 格式處理類

* class bloggscontactencoder

*/class

bloggscontactencoder

extends

contactencoder

}

/**

*/class

extends

}

8、建立megacal ttd 格式處理類

/**

* megacal ttd 格式處理類

* class megattdencoder

*/class

megattdencoder

extends

ttdencoder

}

9、建立megacal contact 格式處理類

/**

* megacal contact 格式處理類

* class megacontactencoder

*/class

megacontactencoder

extends

contactencoder

}

10、建立bloggscal 工廠類

/**

* bloggscal 工廠類

* class bloggscommsmanager

*/class

bloggscommsmanager

extends

commsmanager

public

function()

public

function

getttdencoder()

public

function

getcontractencoder()

public

function

getfootertext()

}

11、建立megacal 工廠類

/**

* megacal 工廠類

* class megacommsmanager

*/class

megacommsmanager

extends

commsmanager

public

function()

public

function

getttdencoder()

public

function

getcontractencoder()

public

function

getfootertext()

}

12、呼叫

$mgr

=new

bloggscommsmanager()

;print

$mgr

->

getheadertext()

;print

$mgr

->()

->

encode()

;print

$mgr

->

getttdencoder()

->

encode()

;print

$mgr

->

getcontractencoder()

->

encode()

;print

$mgr

->

getfootertext()

;$mega

=new

megacommsmanager()

;print

$mega

->

getheadertext()

;print

$mega

->()

->

encode()

;print

$mega

->

getttdencoder()

->

encode()

;print

$mega

->

getcontractencoder()

->

encode()

;print

$mega

->

getfootertext()

;

13、結果

bloggscal header

ttd data encoded in bloggscal format

contact data encoded in bloggscal format

bloggscal footer

megacal header

ttd data encoded in megacal format

contact data encoded in megacal format

megacal footer

1、解除了系統與實現細節間的耦合。我們可以在示例程式中新增或移除任何數量的編碼型別,而不會對系統造成任何影響。

2、我們組合了系統中功能相關的元素。因此,bloggscommsmanager 可以確保只使用與 bloggscal 格式相關的類。

3、新增新產品會非常痛苦,這是因為我們不僅需要建立新產品的實現類,還需要修改抽象建立者及其所有的實現類來支援這個新產品。

設計模式之工廠模式(簡單工廠 工廠模式 抽象工廠)

參考博文 侵權必刪 什麼是工廠模式 通過 物件建立 模式繞開new,來避免物件建立 new 過程中所導致的緊耦合 依賴具體類 適用性 使用new建立物件且導致緊耦合的場景。思考 物件導向程式設計要以動態的思維去看待 換句話說,在看 時需要時間概念,發現 在未來的穩定之處和變化之處。一般介面和抽象類是...

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

抽象工廠模式 abstact factory 是一種常見的軟體設計模式。該模式為乙個產品族提供了統一的建立介面。當需要這個產品族的某一系列的時候,可以為此系列的產品族建立乙個具體的工廠類。一 意圖 抽象工廠模式提供乙個建立一系統相關或相互依賴物件的介面,而無需指定它們具體的類 gof95 二 抽象工...

php設計模式之抽象工廠

案例 追mm少不了請吃飯了,去麥當勞,只管向服務員說 兩個b 就行了。麥當勞就是b 的abstractfactory,b 裡含有漢堡,雞翅和飲料.麥當勞或肯德基會根據b 的規格,讓漢堡factory,雞翅factory,飲料factory分別生產對應b 的材料.抽象工廠模式 提供乙個建立一系列相關或...