今天著重學(xué)習(xí)了一下工廠方法(FactoryMethod)這一設(shè)計模式,以下是自己的一些學(xué)習(xí)心得和體會,做一個記錄:
工廠方法屬于23種模式中的創(chuàng)建型模式之一,由于之前對簡單工廠有過一些了解,而工廠方法是簡單工廠的一種演變,從簡單工廠中可以看出,一個與客戶端交互的類里面要承擔(dān)多個不同類的創(chuàng)建,是一個相當(dāng)累的過程,而工廠方法就是在其基礎(chǔ)上將這個交互類進(jìn)行拆分,讓各個類可以獨(dú)立創(chuàng)建,以便于水平擴(kuò)展。
以創(chuàng)建游戲角色為例:
<?php /** Hero * 英雄接口 */ interface Hero { function Create(); } /** GuanYu 關(guān)羽 * 具體英雄類 */ Class GuanYu implements Hero { function Create() { echo "關(guān)羽加入戰(zhàn)場。。。<br/>"; } } /** ZhangFei 張飛 * 具體英雄類 */ Class ZhangFei implements Hero { function Create() { echo "張飛加入戰(zhàn)場。。。<br/>"; } } /** FactoryMethod * 工廠方法接口 */ interface FactoryMethod { function CreateHero(); } /** GuanYuFactory * 關(guān)羽工廠類 */ Class GuanYuFactory implements FactoryMethod { function CreateHero() { return new GuanYu(); } } /** ZhangFeiFactory * 張飛工廠類 */ Class ZhangFeiFactory implements FactoryMethod { function CreateHero() { return new ZhangFei(); } }
<?php // 工廠方式 客戶端 index.php header("Content-Type:text/html;charset=utf-8"); require_once "FactoryMethod.php"; // 各自調(diào)用各自的工廠方法進(jìn)行創(chuàng)建 $GYF = new GuanyuFactory(); $ZFF = new ZhangFeiFactory(); // 調(diào)用各自工廠方法的創(chuàng)建英雄方法 $GuanYu = $GYF->CreateHero(); $ZhangFei = $ZFF->CreateHero(); // 調(diào)用各自創(chuàng)建英雄方法 $GuanYu->Create(); $ZhangFei->Create();
相關(guān)推薦:
PHP設(shè)計模式之簡單工廠
以上就是PHP設(shè)計模式之工廠方法 的詳細(xì)內(nèi)容,更多請關(guān)注 其它相關(guān)文章!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選