PHP設計模式之單例模式

單例設計模式通常包含以下三點:

· 一個私有的 構造方法;(確保用戶無法通過創(chuàng)建對象對其進行實例化)

· 一個公有的 靜態(tài)的 方法;(負責對其本身進行實例化)

· 一個私有的 靜態(tài)的 屬性;(用于保存僅有的一個實例化對象)

書中自有顏如玉,書中自有黃金屋

基本的單例的示例代碼:

class singleExp{

????//用于保存僅有的一個實例化對象

????private static $Instance=NULL;

????//構造方法 使用private 封裝后 則只能在類的內(nèi)部使用new去創(chuàng)建對象

????private function __construct(){};

????//只有通過這個方法才能返回本類中的對象,該方法是靜態(tài)方法 用類名調(diào)用

????public static getInstance(){

???????if(self::$Instance instanceof self){ //如果本類中的$Instance為空,說明還沒有被實例化過

?????????self::$Instance=new singleExp(); //實例化本對象

???????}

???????return self::$Instance;

????}

}

$instance=singleExp::getInstance(); //只能使用靜態(tài)方法getInstance()去獲取singleTon類的對象

書中自有顏如玉,書中自有黃金屋

????????所謂的單例設計模式就是一個類只能產(chǎn)生/創(chuàng)建唯一一個對象。

????????要編寫單態(tài)設計模式,就必須讓一個類只能實例化一個對象,而要想讓一個類只能實例化一個對象,就要先讓一個類不能實例化對象。

書中自有顏如玉,書中自有黃金屋

如果需要多次用到單例可如下所示

class singleExp{

????//用于保存僅有的一個實例化對象

????private static $Instance=NULL;

????//構造方法 使用private 封裝后 則只能在類的內(nèi)部使用new去創(chuàng)建對象

????private function __construct(){};

????//只有通過這個方法才能返回本類中的對象,該方法是靜態(tài)方法 用類名調(diào)用

????public static getInstance(){

????????$class = get_called_class();

???????if(self::$Instance instanceof self){ //如果本類中的$Instance為空,說明還沒有被實例化過

?????????self::$Instance[$class]=new singleExp(); //實例化本對象

???????}

???????return self::$Instance[$class];

????}

}

$instance=singleExp::getInstance(); //只能使用靜態(tài)方法getInstance()去獲取singleTon類的對象

????????加強版的單例用法示例

書中自有顏如玉,書中自有黃金屋

????????圖片與文章無關,在閱讀技術文檔的時候欣賞一下美女也是一個不錯的選擇,希望可以對你有幫助,如果有錯誤的地方歡迎指正。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 前言 本文主要參考 那些年,我們一起寫過的“單例模式”。 何為單例模式? 顧名思義,單例模式就是保證一個類僅有一個...
    tandeneck閱讀 2,627評論 1 8
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 單例模式的作用是在多次調(diào)用對象創(chuàng)建實例的時候,返回最初創(chuàng)建的實例,而不是每次創(chuàng)建新的實例。 比如在創(chuàng)建一個DB實例...
    守望星空l閱讀 293評論 0 1
  • 單例設計模式所解決的問題就是:保證類的對象在內(nèi)存中唯一。 舉例: A、B類都想要操作配置文件信息Config.ja...
    飛天_shine閱讀 299評論 0 0
  • 迷霧漸失來路,不知青鳥歸處。橋邊倚欄人,望斷西沉日暮。何故?何故?心頭相思長駐。
    我是CC閱讀 233評論 0 2

友情鏈接更多精彩內(nèi)容