新聞中心

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),曲陽(yáng)企業(yè)網(wǎng)站建設(shè),曲陽(yáng)品牌網(wǎng)站建設(shè),網(wǎng)站定制,曲陽(yáng)網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,曲陽(yáng)網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
其實(shí),大家在編碼的過(guò)程中肯定也用到了一些與這些設(shè)計(jì)模式類似的編碼方法,只是不知道這些方法可以被抽象到“模式”這么一個(gè)高度。
本節(jié)我們就來(lái)簡(jiǎn)單地了解一下在 php 編碼過(guò)程中經(jīng)常會(huì)用到的一些設(shè)計(jì)模式。
1、工廠模式
工廠模式是一種專門用來(lái)創(chuàng)建其它對(duì)象的類(稱為“工廠類”),根據(jù)傳遞參數(shù)的不同,來(lái)創(chuàng)建不同類的對(duì)象。我們可以使用工廠類創(chuàng)建對(duì)象,而不是直接使用 new。
工廠類中至少有一個(gè)公共的靜態(tài)方法(稱為“工廠方法”),靜態(tài)方法接受一個(gè)參數(shù),根據(jù)這個(gè)參數(shù)來(lái)創(chuàng)建不同類的對(duì)象。
【示例】定義加、減、乘、除四個(gè)類,并通過(guò)工廠類調(diào)用它們。
getMessage();
}
}
}
// 工程類,主要用來(lái)創(chuàng)建對(duì)象
// 功能:根據(jù)輸入的運(yùn)算符號(hào),工廠就能實(shí)例化出合適的對(duì)象
class Factory {
public static function createObj($operate){
switch ($operate){
case '+':
return new Add();
break;
case '-':
return new Sub();
break;
case '*':
return new Mul();
break;
case '/':
return new Div();
break;
}
}
}
$test = Factory::createObj('/');
$result = $test->getValue(23,3);
echo $result;
?>
運(yùn)行結(jié)果如下:
7.6666666666667
2、單例模式
單例模式也叫單子模式,是一種常用的軟件設(shè)計(jì)模式。 在應(yīng)用這個(gè)模式時(shí),可以確保一個(gè)類只能創(chuàng)建一個(gè)對(duì)象,這么做可以極大節(jié)省內(nèi)存空間,有利于我們協(xié)調(diào)系統(tǒng)的整體行為。
使用單例模式創(chuàng)建的類(“單例類”)不能再其它類中直接實(shí)例化,只能被其自身實(shí)例化。它不會(huì)創(chuàng)建實(shí)例副本,而是會(huì)向單例類內(nèi)部存儲(chǔ)的實(shí)例返回一個(gè)引用。
單例模式一個(gè)主要應(yīng)用場(chǎng)合就是應(yīng)用程序與數(shù)據(jù)庫(kù)打交道的場(chǎng)景,在一個(gè)應(yīng)用中會(huì)存在大量的數(shù)據(jù)庫(kù)操作,針對(duì)數(shù)據(jù)庫(kù)句柄連接數(shù)據(jù)庫(kù)的行為,使用單例模式可以避免大量的 new 操作,因?yàn)槊恳淮?new 操作都會(huì)消耗系統(tǒng)和內(nèi)存的資源。
實(shí)現(xiàn)單例模式的思路(三私一公):
- 私有的靜態(tài)的對(duì)象實(shí)例;
- 私有的構(gòu)造方法,在類外不能使用 new 創(chuàng)建對(duì)象;
- 私有的克隆方法,在類外不能使用 clone 克隆對(duì)象;
- 公共的靜態(tài)的創(chuàng)建對(duì)象實(shí)例的方法。
【示例】使用單例模式創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)連接類。
運(yùn)行結(jié)果如下:
object(Mysql)#1 (0) {
}
object(Mysql)#1 (0) {
}
object(Mysql)#1 (0) {
}
通過(guò)運(yùn)行結(jié)果可以看出,我們多次調(diào)用 getInstance() 方法并沒(méi)有創(chuàng)建多個(gè)對(duì)象,所以說(shuō)使用單例模式可以保證一個(gè)類只能創(chuàng)建一個(gè)對(duì)象,不能創(chuàng)建第二個(gè)對(duì)象。
當(dāng)前文章:PHP設(shè)計(jì)模式之單例模式與工廠模式
URL地址:http://www.5511xx.com/article/djhghis.html


咨詢
建站咨詢
