国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 課堂 > FAQ問答 > 正文

什么是單例模式?

2020-03-22 18:38:19
字體:
來源:轉載
供稿:網友
單例模式(Singleton pattern)是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱為單例類的特殊類。通過單例模式可以保證系統中一個類只有一個實例而且該實例易于外界訪問,從而方便對實例個數的控制并節約系統資源。如果希望在系統中某個類的對象只能存在一個,單例模式是最好的解決方案。

如何保證一個類只有一個實例并且這個實例易于被訪問呢?定義一個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對象,雖然他們名稱不同,但都代表著同一個對象!這樣就實現單例模式!

以上就是什么是單例模式?的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 澎湖县| 石家庄市| 竹山县| 沁阳市| 岳普湖县| 卓资县| 德江县| 宿迁市| 公主岭市| 新营市| 瓮安县| 印江| 平湖市| 砀山县| 含山县| 松桃| 安新县| 班玛县| 旬阳县| 渝北区| 桐柏县| 宜黄县| 大石桥市| 北川| 饶河县| 平塘县| 汽车| 衡东县| 攀枝花市| 察雅县| 巴彦淖尔市| 宜春市| 六盘水市| 嘉义县| 彩票| 嘉义县| 连平县| 东阿县| 临城县| 韩城市| 桃源县|