相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡(jiǎn)單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動(dòng)到新位置)
- dirname(__FILE__)的含義和應(yīng)用說(shuō)明
- thinkPHP5框架實(shí)現(xiàn)分頁(yè)查詢功能的方法示例
- PHP中單雙號(hào)與變量
- PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析
- Laravel ORM對(duì)Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時(shí)進(jìn)度條顯示的實(shí)現(xiàn)
PHP設(shè)計(jì)模式之工廠模式實(shí)例總結(jié)
本文實(shí)例講述了PHP設(shè)計(jì)模式之工廠模式。分享給大家供大家參考,具體如下:
使用工廠模式的目的或目標(biāo)?
工廠模式的最大優(yōu)點(diǎn)在于創(chuàng)建對(duì)象上面,就是把創(chuàng)建對(duì)象的過(guò)程封裝起來(lái),這樣隨時(shí)可以產(chǎn)生一個(gè)新的對(duì)象。
減少代碼進(jìn)行復(fù)制粘帖,耦合關(guān)系重,牽一發(fā)動(dòng)其他部分代碼。
通俗的說(shuō),以前創(chuàng)建一個(gè)對(duì)象要使用new,現(xiàn)在把這個(gè)過(guò)程封裝起來(lái)了。
假設(shè)不使用工廠模式:那么很多地方調(diào)用類a,代碼就會(huì)這樣子創(chuàng)建一個(gè)實(shí)例:new a(),假設(shè)某天需要把a(bǔ)類的名稱修改,意味著很多調(diào)用的代碼都要修改。
工廠模式的優(yōu)點(diǎn)就在創(chuàng)建對(duì)象上。
工廠模式的優(yōu)點(diǎn)就在創(chuàng)建對(duì)象上。建立一個(gè)工廠(一個(gè)函數(shù)或一個(gè)類方法)來(lái)制造新的對(duì)象,它的任務(wù)就是把對(duì)象的創(chuàng)建過(guò)程都封裝起來(lái),
創(chuàng)建對(duì)象不是使用new的形式了。而是定義一個(gè)方法,用于創(chuàng)建對(duì)象實(shí)例。
每個(gè)類可能會(huì)需要連接數(shù)據(jù)庫(kù)。那么就將連接數(shù)據(jù)庫(kù)封裝在一個(gè)類中。以后在其他類中通過(guò)類名:
為什么引入抽象的概念?
想一想,在現(xiàn)實(shí)生活中,當(dāng)我們無(wú)法確定某個(gè)具體的東西的時(shí)候,往往把一類東西歸于抽象類別。
工廠方法:
比如你的工廠叫做“香煙工廠”,那么可以有“七匹狼工廠”“中華工廠”等,但是,這個(gè)工廠只生廠一種商品:香煙;
抽象工廠:無(wú)法描述它到底生產(chǎn)什么產(chǎn)品,它生產(chǎn)很多類型的產(chǎn)品(所以抽象工廠就會(huì)生成子工廠)。
你的工廠是綜合型的,是生產(chǎn)“一系列”產(chǎn)品,而不是“一個(gè)”,比如:生產(chǎn)“香煙”,還有“啤酒”等。然后它也可以有派生出來(lái)的具體的工廠,但這些工廠都是生產(chǎn)這一系列產(chǎn)品,只是可能因?yàn)榈赜虿灰粯?,為了適應(yīng)當(dāng)?shù)厝丝谖?,味道也不太一樣?/p>
工廠模式:理解成只生成一種產(chǎn)品的工廠。比如生產(chǎn)香煙的。
工廠方法:工廠的一種產(chǎn)品生產(chǎn)線 。比如鍵盤的生成過(guò)程。
別人會(huì)反駁:吃飽了沒(méi)事干,一定要修改類名稱呢?這個(gè)說(shuō)不定。一般都不會(huì)去修改類名稱。
其實(shí)工廠模式有很多變體,抓住精髓才是關(guān)鍵:只要是可以根據(jù)不同的參數(shù)生成不同的類實(shí)例,那么就符合工廠模式的設(shè)計(jì)思想。
這樣子讓我聯(lián)想到框架中經(jīng)常會(huì)有負(fù)責(zé)生成具體類實(shí)例的方法供調(diào)用。
由于前面使用過(guò)phpcms,用phpcms的來(lái)幫助理解,更加好,如下:
pc_base:load_app_class("order"');//參數(shù)名稱就是類名稱。