如何保證一個類只有一個實例并且這個實例易于被訪問呢?定義一個html' target='_blank'>全局變量可以確保對象隨時都可以被訪問,但不能防止我們實例化多個對象。一個更好的解決辦法是讓類自身負責保存它的唯一實例。這個類可以保證沒有其他實例被創建,并且它可以提供一個訪問該實例的方法。這就是單例模式的模式動機。
例如我們在php的開發過程中我們創建了一個db類(數據庫操作類),那么我們希望再一個php文件中一個數據庫只被連接一次而一個php文件中也只需要一個數據庫對象!因為多次連接數據庫會大大降低php的執行效率。也會帶來極大的系統開銷!
使用單例模式來封裝你的數據庫吧
?phpclass db//使用一個靜態變量記錄db對象初始化時為nullpublic static $db = null;/* 私有構造函數是類無法完成外部的調用* 意味著您將無法使用 $xx = new db();private function __construct(){echo 連接數據庫.... * 使用靜態方法去獲取數據對象* 獲取時先判斷db對象是否已經存在,如果存在則直接返回db對象反正則創建這個對象public static function getInstance(){if(self::$db == null){self::$db = new db();return self::$db;public function query($sql){echo 執行sql命令 public function __destruct(){echo 關閉數據庫連接.... $db = db::getInstance();$db1 = db::getInstance();$db- query( test $db2 = db::getInstance();//輸出 : 連接數據庫....執行sql命令關閉數據庫連接....
//可以看到不論我們獲取多少次db對象,雖然他們名稱不同,但都代表著同一個對象!這樣就實現單例模式!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答