在php編程中,單例模式雖然不是最常用,但一定是最不可缺少、應用非常廣泛的一種設計模式,雖然你可能不太了解它,但只要你有過開發一個完成系統的經歷,相信我,你一定使用過它。
單例模式(Singleton Pattern),也被成為單件模式,確保某個類只能有一個正在運行的實例,而且自行實例化并且向系統提供這個實例。有且只有一個 是單例模式最重要的特點。
1.只能有一個實例。
2.必須自行創建這個實例。
3.必須給其他對象提供這一實例。
比如在應用中需要一個日志記錄對象,并且需要在整個系統中只使用這一個對象,這時候就需要單例模式。另外一個應用中會存在大量的數據庫操作,針對數據庫句柄連接數據庫的行為,使用單例模式可以避免大量的new操作。因為每一次new操作都會消耗系統和內存的資源。
實現一個靜態的類方法getInstance(),這個方法只返回該類的唯一實例,當第一次調用這個方法的時候,它創建一個實例,吧它存在一個私有的靜態變量之中,并且返回該實例,下一次,他只返回已經創建的實例。
一個日志記錄類。
<?php/*** 日志記錄類*/class Logger{ //私有化靜態變量 static PRivate $instance = NULL; // 私有構造函數,防止實例化對象 private function __construct() { # code... } // 私有克隆函數 private function __clone(){ } // 靜態方法,統一訪問入口 static public function getInstance(){ if(self::$instance == NULL){ self::$instance = new Logger(); } return self::$instance; } static function Log($str) { }}?>一般要使一個程序中只有一個實例時,會使用全局變量,但不同于面向過程,面向對象的程序設計中應當盡量避免全局變量的出現,所以使用單例模式是一個很好的選擇。
新聞熱點
疑難解答
圖片精選