【設(shè)計(jì)模式】php設(shè)計(jì)模式之單例模式學(xué)習(xí)
作者: 鄭曉 分類: 片言碎語 發(fā)布于: 2014-06-17 18:17 瀏覽:4,874 評(píng)論(2)
什么是單例模式,單例模式顧名思義,就是只有一個(gè)實(shí)例。作為對(duì)象的一種創(chuàng)建模式, 單例模式確保了某一個(gè)類有且只有一個(gè)實(shí)例,而且通過自身完成實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。
一個(gè)單例模式的類,要具備以下幾點(diǎn)要求:
1、構(gòu)造函數(shù)須要標(biāo)記為private(訪問控制:聲明為私有方法,防止外部代碼直接使用new來創(chuàng)建對(duì)象),單例類不能在其他類中實(shí)例化,只能被其自身實(shí)例化。
2、擁有一個(gè)保存類的實(shí)例的私有靜態(tài)成員變量。
3、擁有一個(gè)訪問這個(gè)實(shí)例的公共的靜態(tài)方法(一般常用getInstance()方法進(jìn)行實(shí)例化類,或返回已經(jīng)實(shí)例化的對(duì)象,通過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ù)庫應(yīng)用中, 一般在一個(gè)應(yīng)用中會(huì)存在大量的數(shù)據(jù)庫操作, 在使用面向?qū)ο蟮姆绞介_發(fā)時(shí), 如果使用單例模式, 則可以避免大量的new 操作消耗的資源,還可以減少數(shù)據(jù)庫連接這樣就不容易出現(xiàn)too many connections情況。
2. 如果系統(tǒng)中需要有一個(gè)類來全局控制某些配置信息, 那么使用單例模式可以很方便的實(shí)現(xiàn)。
3. 在一次頁面請(qǐng)求中, 便于進(jìn)行調(diào)試, 因?yàn)樗械拇a(例如數(shù)據(jù)庫操作類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://yjfs.org.cn/she-ji-mo-shi-php-she-ji-mo-shi-zhi-dan-li.html
你好 朋友 有沒有興趣做友情鏈接