摘要:一什么是單例設計模式單例模式,也叫單子模式,是一種常用的軟件設計模式。在應用這個模式時,單例對象的類必須保證只有一個實例存在。
一、什么是單例設計模式
單例模式,也叫單子模式,是一種常用的軟件設計模式。在應用這個模式時,單例對象的類必須保證只有一個實例存在。
二、單例模式的技巧利用$_instance私有變量來保存類的唯一實例化對象;
設計一個getInstance對外公開的函數,可以獲取類唯一實例;
防止用戶用new實例化,和克隆,構造兩個__construct、__clone私有函數;
三、單例模式的應用場景數據庫設計,我們發送一次請求,可能會需要訪問不同的表,那么如果每次訪問都 new 一個實例,那必然會造成資源的浪費,所以使用單例模式,可以很好的節省資源。
class DataBase { /** * 靜態成品變量,保存全局實例 */ private static $_instance = null; /** * 測試變量,存儲日志信息 */ private static $_msg = null; /** * 私有構造方法,防止外界實例化對象 */ private function __construct() { $connect = "連接數據庫操作"; } /** * 私有化克隆方法,防止外鍵克隆對象 */ private function __clone() { } /** * 靜態方法,外界獲取實例的唯一接口 * @return Object 返回對象唯一實例 */ public static function getInstance() { if (!self::$_instance){ self::$_instance = new DataBase(); self::$_msg = "這是一個新對象" . "
"; }else{ self::$_msg = "這個是一個舊的對象" . "
"; } return self::$_instance; } public function log() { echo self::$_msg; } }
$dbA = DataBase::getInstance(); $dbA->log(); $dbB = DataBase::getInstance(); $dbB->log(); $dbC = DataBase::getInstance(); $dbC->log();
這是一個新對象
這個是一個舊的對象
這個是一個舊的對象
“對象”?,程序員怎么可能有對象!~
參考 系列源地址WilburXu/design_pattern
系列目錄PHP 設計模式概述
PHP設計模式(一)簡單工廠模式 (Simple Factory For PHP)
PHP設計模式(二)工廠方法模式(Factory Method)
PHP設計模式(三)抽象工廠模式(Abstract Factory)
PHP設計模式(四)單例模式(Singleton)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29503.html
摘要:單例模式用于為一個類生成一個唯一的對象。作為對象的創建模式,單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統提供這個實例,這個類稱為單例類。 單例模式(Singleton):用于為一個類生成一個唯一的對象。最常用的地方是數據庫連接。 使用單例模式生成一個對象后,該對象可以被其它眾多對象所使用。 作為對象的創建模式,單例模式確保某一個類只有一個實例,而且自行實例化并向整個系...
摘要:創建型模式主要有以下五種簡單工廠模式和工廠方法模式抽象工廠模式單例模式建造者模式原型模式在設計模式一書中將工廠模式分為兩類工廠方法模式與抽象工廠模式。 一、 設計模式(Design pattern)是什么 設計模式是一套被反復使用、多數人知曉、經過分類編目的代碼設計的經驗總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 二、 為什么會有設計模式 在軟件開發過...
摘要:大佬看完如果發現鄙人理解有誤請立即指出,感謝拍磚,跪求鞭打單例單元素模式實現來自說明通過提供對自身共享實例對訪問,單元素單例設計模式用于限制特定對象只能被創建一次。 整理一下自己的學習Aaron Saray 寫的PHP設計模式一些demo和自己的理解。大佬看完如果發現鄙人理解有誤請立即指出,感謝拍磚,跪求鞭打 /** * Singleton 單例(單元素)模式實現 * -----...
閱讀 1829·2021-09-14 18:03
閱讀 2267·2019-08-30 15:48
閱讀 1121·2019-08-30 14:09
閱讀 507·2019-08-30 12:55
閱讀 2724·2019-08-29 11:29
閱讀 1483·2019-08-26 13:43
閱讀 2311·2019-08-26 13:30
閱讀 2369·2019-08-26 12:17