單例設計模式的特點:
1、在使用者量大的應用中會存在大量的資料庫操作, 使用單例模式, 則可以避免大量的new 操作消耗的資源。
2、使用單例設計模式,可以全域性控制某些配置資訊,方便除錯,單例設計模式只有乙個入口,所有的**都集中在乙個類中,定位問題簡單。
單例模式的特點:
1、乙個類只能有乙個類物件(只能例項化乙個物件)
2、它必須自己建立這個例項
3、它必須自行向整個系統提供這個例項
4、建構函式和轉殖函式必須宣告為私有的,這是為了防止外部程式 new 類從而失去單例模式的意義
5、 getinstance()方法必須宣告為公有的,必須呼叫此方法以返回唯一例項的乙個引用
6、擁有乙個儲存類的例項的靜態成員變數
7、php的單例模式是相對而言的,因為php的解釋執行機制使得每個php頁面被解釋執行後,所有的相關資源都會被**
8、擁有乙個訪問這個例項的公共的靜態方法(常用getinstance()方法進行例項化單例類,通過instanceof操作符可以檢測到類是否已經被例項化)
另外,需要建立__clone()方法防止物件被複製(轉殖)
class 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->expiretime = time() + $this->attr['timeout'];
}/**
* 得到靜態例項化的物件.
* 為每個資料庫建立乙個連線
* 如果連線超時,將會重新建立乙個連線
*/public static function getinstance($config,$attr=array())
return self::$_instance;
}// 靜止被轉殖
private function __clone(){}
}
單例設計模式(餓漢單例設計模式 懶漢單例設計模式)
1.什麼是單例 單例的意思是乙個類永遠只存在乙個物件,不能建立多個物件。2.為什麼要用單例 開發中有很多的物件我們只需要乙個,例如虛擬機器物件,任務管理器物件 物件越多越佔記憶體,有時候只需要乙個物件就可以實現業務,單例可以節省記憶體空間。3.如何實現單例 單例的實現方式有 餓漢單例設計模式 通過類...
設計模式 單例設計模式
歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...
設計模式 單例設計模式
單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項 單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。單例設計模式 解決的問題 可以保...