php 设计模式 - 单例
生活随笔
收集整理的這篇文章主要介紹了
php 设计模式 - 单例
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
概述:
作為對(duì)象的創(chuàng)建模式,單例確保某一個(gè)內(nèi)在系統(tǒng)中只存在一個(gè)實(shí)例,它不可以創(chuàng)建副本。克隆函數(shù)(__clone )以及構(gòu)造函數(shù)(__construct )必須聲明為私用, 防止外部程序 創(chuàng)建一個(gè)新類 ,而失去單例模式的意義。
PHP 語(yǔ)言是一種解釋型的語(yǔ)言,在頁(yè)面執(zhí)行完成后,所有的相關(guān)資源都會(huì)被回收。PHP在語(yǔ)言級(jí)別上,不能像C#,JAVA編譯型語(yǔ)言一樣,沒(méi)辦法讓某個(gè)對(duì)象長(zhǎng)距內(nèi)存。
然而在單一請(qǐng)求場(chǎng)景時(shí),還是可以通過(guò)單例模式來(lái)共享對(duì)象,比如數(shù)據(jù)庫(kù)連接對(duì)象。
class DbConnection {private static $_instance;private static $token = 0;public static function getInstance(){if (static::$_instance instanceof DbConnection) {return static::$_instance;}// 隨機(jī)生產(chǎn)一個(gè) token 標(biāo)示當(dāng)前內(nèi)static::$token = rand(100, 1000);static::$_instance = new DbConnection();return static::$_instance;}// 克隆函數(shù)以及構(gòu)造函數(shù)必須聲明為私用,// 防止外部程序 創(chuàng)建一個(gè)新類 ,而失去單例模式的意義。private function __clone(){}private function __construct(){}public function open(){echo "init times:" . static::$token . '<br/>';}}
單例與static 類的 比較:
1、singleton 能夠很好的保持對(duì)象的面相對(duì)象,比如靜態(tài)工具類則可以使用 static。2、單例可以實(shí)現(xiàn)自某接口,可以繼承自某類。靜態(tài)類也可以繼承自某類,但是就沒(méi)法使用父類里面的protect成員了。
轉(zhuǎn)載于:https://www.cnblogs.com/rhythmK/p/5520271.html
總結(jié)
以上是生活随笔為你收集整理的php 设计模式 - 单例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: var arr = [] 与 var
- 下一篇: PHP 文件上传全攻略