單例模式按字面來看就是指某乙個類只存在乙個例項程式設計客棧,這一點其實是與靜態方法是相同的,只存在乙個例項的好處是當我們需要使用某個類時只需要例項化一次,不需要每次都去new,極大的降低了資源的耗費,比如說資料庫的連線類。
乙個類只有乙個物件例項含義
作為物件的建立模式,單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統全域性地提供這個例項。它不會建立例項副本,而是會向單例類內部儲存的例項返回乙個引用。
那麼單例模式與靜態方法有什麼區別呢?
個人觀點,如果不存在比較複雜的事務管理,用singleton會比較好,原因有三:
雖然這樣說,但到底該選用單例還是靜態,我們還需要視實際情況而定,在設計模式中我們應該做到的是:減少**,增加穩定,方便理解,提公升效能,減少開銷。
扯遠了,下面我們說回php中單例模式的使用。
單例類至少擁有以下三種公共元素:
單例模式確保某個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。
單例模式是一種常見的設計模式,在計算機系統中,執行緒池、快取、日誌物件、對話方塊、印表機、資料庫操作、顯示卡的驅動程式常被設計成單例。
單例模式分3種:懶漢式單例、餓漢式單例、登記式單例。
單例模式有以下3個特點:
1.只能有乙個例項。
2.必須自行建立這個例項。
3.必須給其他物件提供這一例項。
那麼為什麼要使用php單例模式?
php乙個主要應用場合就是應用程式與資料庫打交道的場景,在乙個應用中會存在大量的資料庫操作,針對資料庫控制代碼連線資料庫的行為,使用單例模式可以避免大量的new操作。因為每一次new操作都會消耗系統和記憶體的資源。
具程式設計客棧體使用例子:
<?php /**
* by www.jb51.net
*/class mysql
//建立乙個用來例項化物件的方法
public static function getinstance()
return self::$instance;
} //防止物件被複製
public function __clone()
//...
public function query()
}//使用單例呼叫類中的方法,不能new 和 clone
mysql::getinstance()->query();
?>
總結
單例模式應用場景
了解單例模式 單例模式實際應用場景。1.windows的task manager 任務管理器 就是很典型的單例模式 這個很熟悉吧 想想看,是不是呢,你能開啟兩個windows task manager嗎?2.windows的recycle bin 站 也是典型的單例應用。在整個系統執行過程中,站一直...
單例模式的應用場景
使用單例模式最核心的一點是體現了物件導向封裝特性中的 單一職責 和 物件自治 原則。很多時候我們要保證類的例項只有乙個。我們可能在自己的 中判斷需要的類的例項有無,無就new乙個。這樣看似不錯。問題是,你用到這個類的地方有n個,這樣你就需要n個判斷。為什麼不把這個職責交給類本身呢?然後讓類提供乙個介...
單例模式的應用場景
單例模式是乙個非常重要的設計模式,下面是單例模式的經常使用場景 1 專案中的配置檔案,如資料庫的連線資訊等,通常會用單例物件讀取並儲存 2 hibernate的sessionfactory應作為單例使用 3 servlet是典型的單例物件,這個物件是由tomcat伺服器建立並維護的 4 spring...