當(dāng)前位置:博客首頁(yè)>>片言碎語(yǔ) >> 閱讀正文

【設(shè)計(jì)模式】php設(shè)計(jì)模式之單例模式學(xué)習(xí)

作者: 鄭曉 分類: 片言碎語(yǔ) 發(fā)布于: 2014-06-17 18:17 瀏覽:4,672 評(píng)論(2)


什么是單例模式,單例模式顧名思義,就是只有一個(gè)實(shí)例。作為對(duì)象的一種創(chuàng)建模式, 單例模式確保了某一個(gè)類有且只有一個(gè)實(shí)例,而且通過(guò)自身完成實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。

一個(gè)單例模式的類,要具備以下幾點(diǎn)要求:
1、構(gòu)造函數(shù)須要標(biāo)記為private(訪問(wèn)控制:聲明為私有方法,防止外部代碼直接使用new來(lái)創(chuàng)建對(duì)象),單例類不能在其他類中實(shí)例化,只能被其自身實(shí)例化。
2、擁有一個(gè)保存類的實(shí)例的私有靜態(tài)成員變量。
3、擁有一個(gè)訪問(wèn)這個(gè)實(shí)例的公共的靜態(tài)方法(一般常用getInstance()方法進(jìn)行實(shí)例化類,或返回已經(jīng)實(shí)例化的對(duì)象,通過(guò)instanceof操作符可以檢測(cè)到類是否已經(jīng)被實(shí)例化)
4、需要?jiǎng)?chuàng)建__clone()方法防止對(duì)象被復(fù)制(克?。?,當(dāng)代碼中使用clone操作符進(jìn)行對(duì)象克隆時(shí)會(huì)調(diào)用這個(gè)方法。

為什么使用PHP單例模式?

1. php的單例主要應(yīng)用于數(shù)據(jù)庫(kù)應(yīng)用中, 一般在一個(gè)應(yīng)用中會(huì)存在大量的數(shù)據(jù)庫(kù)操作, 在使用面向?qū)ο蟮姆绞介_(kāi)發(fā)時(shí), 如果使用單例模式, 則可以避免大量的new 操作消耗的資源,還可以減少數(shù)據(jù)庫(kù)連接這樣就不容易出現(xiàn)too many connections情況。

2. 如果系統(tǒng)中需要有一個(gè)類來(lái)全局控制某些配置信息, 那么使用單例模式可以很方便的實(shí)現(xiàn)。

3. 在一次頁(yè)面請(qǐng)求中, 便于進(jìn)行調(diào)試, 因?yàn)樗械拇a(例如數(shù)據(jù)庫(kù)操作類db)都集中在一個(gè)類中, 我們可以在類中設(shè)置鉤子, 輸出日志,從而避免到處的打印。。。

test();

//復(fù)制對(duì)象將導(dǎo)致一個(gè)E_USER_ERROR錯(cuò)誤.
$test4 = clone $test;
?>

? ? ? ?

本文采用知識(shí)共享署名-非商業(yè)性使用 3.0 中國(guó)大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時(shí)請(qǐng)注明出處及相應(yīng)鏈接。

本文永久鏈接: http://www.yjfs.org.cn/she-ji-mo-shi-php-she-ji-mo-shi-zhi-dan-li.html

【設(shè)計(jì)模式】php設(shè)計(jì)模式之單例模式學(xué)習(xí):目前有2 條留言

用戶評(píng)論頭像 劉春曉的博客發(fā)表于 2014年06月22日 17:34[回復(fù)]

你好 朋友 有沒(méi)有興趣做友情鏈接

用戶評(píng)論頭像 女裝屋發(fā)表于 2014年06月18日 00:52[回復(fù)]

?? ?? ?? 學(xué)習(xí)了

發(fā)表評(píng)論

change vcode