【設(shè)計模式】php設(shè)計模式之單例模式學(xué)習(xí)
作者: 鄭曉 分類: 片言碎語 發(fā)布于: 2014-06-17 18:17 瀏覽:4,813 評論(2)
什么是單例模式,單例模式顧名思義,就是只有一個實例。作為對象的一種創(chuàng)建模式, 單例模式確保了某一個類有且只有一個實例,而且通過自身完成實例化并向整個系統(tǒng)提供這個實例。
一個單例模式的類,要具備以下幾點要求:
1、構(gòu)造函數(shù)須要標(biāo)記為private(訪問控制:聲明為私有方法,防止外部代碼直接使用new來創(chuàng)建對象),單例類不能在其他類中實例化,只能被其自身實例化。
2、擁有一個保存類的實例的私有靜態(tài)成員變量。
3、擁有一個訪問這個實例的公共的靜態(tài)方法(一般常用getInstance()方法進(jìn)行實例化類,或返回已經(jīng)實例化的對象,通過instanceof操作符可以檢測到類是否已經(jīng)被實例化)
4、需要創(chuàng)建__clone()方法防止對象被復(fù)制(克?。?,當(dāng)代碼中使用clone操作符進(jìn)行對象克隆時會調(diào)用這個方法。
為什么使用PHP單例模式?
1. php的單例主要應(yīng)用于數(shù)據(jù)庫應(yīng)用中, 一般在一個應(yīng)用中會存在大量的數(shù)據(jù)庫操作, 在使用面向?qū)ο蟮姆绞介_發(fā)時, 如果使用單例模式, 則可以避免大量的new 操作消耗的資源,還可以減少數(shù)據(jù)庫連接這樣就不容易出現(xiàn)too many connections情況。
2. 如果系統(tǒng)中需要有一個類來全局控制某些配置信息, 那么使用單例模式可以很方便的實現(xiàn)。
3. 在一次頁面請求中, 便于進(jìn)行調(diào)試, 因為所有的代碼(例如數(shù)據(jù)庫操作類db)都集中在一個類中, 我們可以在類中設(shè)置鉤子, 輸出日志,從而避免到處的打印。。。
test();
//復(fù)制對象將導(dǎo)致一個E_USER_ERROR錯誤.
$test4 = clone $test;
?>
本文采用知識共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時請注明出處及相應(yīng)鏈接。
本文永久鏈接: http://yjfs.org.cn/she-ji-mo-shi-php-she-ji-mo-shi-zhi-dan-li.html
你好 朋友 有沒有興趣做友情鏈接