摘要:單例設計模式的特點在用戶量大的應用中會存在大量的數據庫操作使用單例模式則可以避免大量的操作消耗的資源。使用單例設計模式,可以全局控制某些配置信息,方便調試,單例設計模式只有一個入口,所有的代碼都集中在一個類中,定位問題簡單。
單例設計模式的特點:
1、在用戶量大的應用中會存在大量的數據庫操作, 使用單例模式, 則可以避免大量的new 操作消耗的資源。
2、使用單例設計模式,可以全局控制某些配置信息,方便調試,單例設計模式只有一個入口,所有的代碼都集中在一個類中,定位問題簡單。
單例模式的特點:
1、一個類只能有一個類對象(只能實例化一個對象)
2、它必須自己創建這個實例
3、它必須自行向整個系統提供這個實例
4、構造函數和克隆函數必須聲明為私有的,這是為了防止外部程序 new 類從而失去單例模式的意義
5、 getInstance()方法必須聲明為公有的,必須調用此方法以返回唯一實例的一個引用
6、擁有一個保存類的實例的靜態成員變量
7、PHP的單例模式是相對而言的,因為PHP的解釋運行機制使得每個PHP頁面被解釋執行后,所有的相關資源都會被回收
8、擁有一個訪問這個實例的公共的靜態方法(常用getInstance()方法進行實例化單例類,通過instanceof操作符可以檢測到類是否已經被實例化)
另外,需要創建__clone()方法防止對象被復制(克隆)
class Redis { /** * 實例化的對象,單例模式. * @var iphpdbRedis */ static private $_instance= array(); private function __construct($config,$attr=array()) { if ( !extension_loaded("redis") ) { E(L("_NOT_SUPPORT_").":redis"); } $this->attr = array_merge($this->attr,$attr); $this->port = $config["REDIS_PORT"] ? $config["REDIS_PORT"] : 6379; $this->host = $config["DB_HOST"]; $this->redis = new Redis(); $this->redis->connect($this->host, $this->port, $this->attr["timeout"]); if($config["auth"]) { $this->auth($config["auth"]); $this->auth = $config["auth"]; } $this->expireTime = time() + $this->attr["timeout"]; } /** * 得到靜態實例化的對象. * 為每個數據庫建立一個連接 * 如果連接超時,將會重新建立一個連接 */ public static function getInstance($config,$attr=array()) { if(!self::$_instance || !(self::$_instance instanceof self)){ self::$_instance = new self($config,$attr=array()); } return self::$_instance; } // 靜止被克隆 private function __clone(){} }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30086.html
摘要:總結單例是運用頻率很高的模式,因為客戶端沒有高并發的情況,選擇哪種方式并不會有太大的影響,出于效率考慮,推薦使用和靜態內部類實現單例模式。 單例模式介紹 單例模式是應用最廣的模式之一,也可能是很多人唯一會使用的設計模式。在應用單例模式時,單例對象的類必須保證只用一個實例存在。許多時候整個系統只需要一個全局對象,這樣有利于我么能協調整個系統整體的行為。 單例模式的使用場景 確保某個類有且...
摘要:不符合設計模式中的單一職責的概念。引入代理實現單例模式引入代理實現單例模式的特點我們負責管理單例的邏輯移到了代理類中。的單例模式對比在以上的代碼中實現的單例模式都混入了傳統面向對象語言的特點。 聲明:這個系列為閱讀《JavaScript設計模式與開發實踐》 ----曾探@著一書的讀書筆記 1.單例模式的特點和定義 保證一個類僅有一個實例,并且提供一個訪問它的全局訪問點。 2.傳統面向對...
摘要:單例模式概述單例模式是一種對象創建模式,用于產生一個類的具體事例。所以解決了線程安全問題參考失效原因和解決方案中單例模式的缺陷及單例的正確寫法懶漢式靜態內部類私有構造器獲取單例的方法靜態內部類持有單例作為靜態屬性。 單例模式概述 單例模式是一種對象創建模式,用于產生一個類的具體事例。使用單例模式可以確保整個系統中單例類只產生一個實例。有下面兩大好處: 對于頻繁創建的對象,節省初第一...
摘要:如果需要防范這種攻擊,請修改構造函數,使其在被要求創建第二個實例時拋出異常。單例模式與單一職責原則有沖突。源碼地址參考文獻設計模式之禪 定義 單例模式是一個比較簡單的模式,其定義如下: 保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。 或者 Ensure a class has only one instance, and provide a global point of ac...
閱讀 3596·2020-12-03 17:42
閱讀 2768·2019-08-30 15:54
閱讀 2223·2019-08-30 15:44
閱讀 571·2019-08-30 14:08
閱讀 970·2019-08-30 14:00
閱讀 1103·2019-08-30 13:46
閱讀 2784·2019-08-29 18:33
閱讀 2886·2019-08-29 14:11