91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用單例模式來封裝數據庫的案例

發布時間:2020-10-29 14:07:22 來源:億速云 閱讀:340 作者:小新 欄目:編程語言

這篇文章主要介紹使用單例模式來封裝數據庫的案例,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

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

如何保證一個類只有一個實例并且這個實例易于被訪問呢?定義一個全局變量可以確保對象隨時都可以被訪問,但不能防止我們實例化多個對象。一個更好的解決辦法是讓類自身負責保存它的唯一實例。這個類可以保證沒有其他實例被創建,并且它可以提供一個訪問該實例的方法。這就是單例模式的模式動機。

例如我們在php的開發過程中我們創建了一個db類(數據庫操作類),那么我們希望再一個php文件中一個數據庫只被連接一次而一個php文件中也只需要一個數據庫對象!因為多次連接數據庫會大大降低php的執行效率。也會帶來極大的系統開銷!

使用單例模式來封裝你的數據庫吧

<?php
class db
{
//使用一個靜態變量記錄db對象初始化時為null
public 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對象,雖然他們名稱不同,但都代表著同一個對象!這樣就實現單例模式!

以上是使用單例模式來封裝數據庫的案例的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐平市| 馆陶县| 磐石市| 淮安市| 呼和浩特市| 铜陵市| 麟游县| 汝阳县| 昌吉市| 临沭县| 宁南县| 公主岭市| 若尔盖县| 忻州市| 即墨市| 黎平县| 河东区| 邳州市| 新密市| 济宁市| 通州区| 八宿县| 施甸县| 吴川市| 龙海市| 宁安市| 乌什县| 仁化县| 牡丹江市| 河津市| 聂荣县| 林州市| 昔阳县| 巴楚县| 乐清市| 潼关县| 闵行区| 滨州市| 鲁甸县| 卓尼县| 兴安盟|