PHP中單例模式與工廠模式詳解
單例模式概念
單例模式是指整個(gè)應(yīng)用中類只有一個(gè)對(duì)象實(shí)例的設(shè)計(jì)模式。
單例模式的特點(diǎn)
一個(gè)類在整個(gè)應(yīng)用中只有一個(gè)實(shí)例
類必須自行創(chuàng)建這個(gè)實(shí)例
必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例
php中使用單例模式的原因
我用php大部分操作都是和各種數(shù)據(jù)庫(kù)打交道,包括mysql,redis,memcache等各種關(guān)系型和非關(guān)系型數(shù)據(jù)庫(kù),所以一個(gè)應(yīng)用中會(huì) 存在大量連接數(shù)據(jù)庫(kù)的操作,如果不用單例模式,那每次都要new操作,但是每次new都會(huì)消耗大量的內(nèi)存資源和系統(tǒng)資源,而且每次打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù)連接都 是對(duì)數(shù)據(jù)庫(kù)的一種極大考驗(yàn)和浪費(fèi)。
需要一個(gè)保存類的唯一實(shí)例的靜態(tài)成員變量(通常$instance為私有變量)
構(gòu)造函數(shù)和克隆函數(shù)必須聲明為私有的,為了防止外部程序new類從而失去單例模式意義
必須提供一個(gè)訪問(wèn)這個(gè)實(shí)例的公共靜態(tài)方法,從而返回唯一實(shí)例的一個(gè)引用
//設(shè)計(jì)模式
//單例模式 都是使用同一個(gè)對(duì)象
//class Ren
//{
// public $name;
// private static $dx; //存儲(chǔ)對(duì)象
//
// private function __construct()
// {
//
// }
//
// public static function DuiXiang()
// {
// if(empty(self::$dx))
// {
// self:;$dx=new Ren();
// }
// return self::$dx;
// }
//}
//
//$r= Ren::DuiXiang();
//把構(gòu)造函數(shù)變?yōu)樗接?
//做了一個(gè)方法來(lái)間接造對(duì)象
//在該方法里面加限制
工廠類
是指包含一個(gè)專門用來(lái)創(chuàng)建其他對(duì)象的方法的類,工廠類在多態(tài)性編程實(shí)踐中是至關(guān)重要的,它允許動(dòng)態(tài)的替換類,修改配置,通常會(huì)使應(yīng)用程序更加靈活,熟練掌握工廠模式高級(jí)PHP開(kāi)發(fā)人員是很重要的。
工廠模式通常用來(lái)返回符合類似接口的不同的類,工廠的一種常見(jiàn)用法就是創(chuàng)建多態(tài)的提供者,從而允許我們基于應(yīng)用程序邏輯或者配置設(shè)置來(lái)決定應(yīng)實(shí)例化哪一個(gè)類,例如,可以使用這樣的提供者來(lái)擴(kuò)展一個(gè)類,而不需要重構(gòu)應(yīng)用程序的其他部分,從而使用新的擴(kuò)展后的名稱 。
通常,工廠模式有一個(gè)關(guān)鍵的構(gòu)造,根據(jù)一般原則命名為Factory的靜態(tài)方法,然而這只是一種原則,工廠方法可以任意命名,這個(gè)靜態(tài)還可以接受任意數(shù)據(jù)的參數(shù),必須返回一個(gè)對(duì)象。
class YunSuan
{
public $a;
public $b;
function Suan()
{
echo "對(duì)兩個(gè)數(shù)進(jìn)行運(yùn)算";
}
class gongchang
{ //功能 : 給一個(gè)參數(shù),返回一個(gè)對(duì)象
static function chanpin($name)
{
switch($name)
{
case "'+":
return new jia();
break;
case "-";
return new jian();
break;
}
}
}
$a=gongchang::chanpin("+");
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
PHP實(shí)現(xiàn)提高SESSION響應(yīng)速度的幾種方法詳解
這篇文章主要介紹了PHP實(shí)現(xiàn)提高SESSION響應(yīng)速度的幾種方法,結(jié)合實(shí)例形式分析了php操作session的機(jī)制與提高session響應(yīng)速度的常見(jiàn)操作技巧,需要的朋友可以參考下2019-08-08
php調(diào)用nginx的mod_zip模塊打包ZIP文件
這篇文章主要介紹了php調(diào)用nginx的mod_zip模塊打包ZIP文件,需要的朋友可以參考下2014-06-06
PHP數(shù)組Key強(qiáng)制類型轉(zhuǎn)換實(shí)現(xiàn)原理解析
這篇文章主要介紹了PHP數(shù)組Key強(qiáng)制類型轉(zhuǎn)換實(shí)現(xiàn)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
PHP數(shù)據(jù)的提交與過(guò)濾基本操作實(shí)例詳解
這篇文章主要介紹了PHP數(shù)據(jù)的提交與過(guò)濾基本操作,簡(jiǎn)要說(shuō)明了php數(shù)據(jù)過(guò)濾的基本方法并結(jié)合實(shí)例形式分析了php針對(duì)各種常見(jiàn)類型數(shù)據(jù)的過(guò)濾操作使用技巧,需要的朋友可以參考下2016-11-11
php echo()和print()、require()和include()函數(shù)區(qū)別說(shuō)明
簡(jiǎn)單總結(jié)echo()和print()、require()和include()等易混淆函數(shù)的區(qū)別2010-03-03
php中10個(gè)不同等級(jí)壓縮優(yōu)化圖片操作示例
這篇文章主要介紹了php中10個(gè)不同等級(jí)壓縮優(yōu)化圖片操作方法,結(jié)合實(shí)例形式分析了php中imagepng函數(shù)進(jìn)行圖片壓縮操作過(guò)程中不同壓縮等級(jí)的使用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-11-11

