1.定義
單例模式確保某一個類只有一個實例,而且自行實例化並向整個系統全局地提供這個實例。它不會創建實例副本,而是會向單例類內部存儲的實例返回一個引用。
2.解決的問題/使用場景
在數據庫應用方面,使用單例模式,可以避免大量的new操作消耗的資源。
如果在系統中需要一個類來全局控制某些配置信息,那麼使用單例模式可以很方便的實現。
3.實現單例模式的要點
需要一個保存類的唯一實例的靜態成員變量。
構造函數和克隆函數必須聲明為私有的,防止外部程序new類從而失去單例模式的意義。
需要提供一個訪問這個實例的靜態方法(一般為getInstance方法),返回實例的引用。
4.實現代碼示例
<?php class Singleton { private static $instance; private $conn; private function __construct() { $this->conn = mysql_connect(...); } private function __clone() { } public static function GetInstance() { if (!(self::$instance instanceof self)) { slef::$instance = new self(); } return self::$instance; } public function GetDbConnect() { return $this->conn; } public function selectData($sql) { // $result mysql_query($sql,$this->conn); // while mysql_fetch_array($result).... } } $db = Singleton::GetInstance(); $db->selectData("select * from user");