PHP設計模式之單例模式

 

定義:

單例模式保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。

 

實現思路:

1、通常我們可以讓一個全局變量使得一個對象被訪問,但它不能防止你實例化多個對象。一個最好的辦法就是,讓類自身負責保存它的唯一實例。這個類可以保證沒有其他實例可以被創建,並且它可以提供一個訪問該實例的方法。

2、首先從強制控制對象實例化開始,創建一個無法從外部進行實例化的類,這聽起來似乎很難,但其實只需要簡單地將構造方法定義爲 private 即可。

3、因爲構造方法是私有的,所以可以用一個靜態方法 $getInstance() 和一個靜態屬性 $instance 來間接地實例化對象。

4、$instance 屬性定義爲靜態私有的,因此我們無法從類的外部訪問它, getInstance() 方法定義爲靜態 public 的,所以腳本中的任何代碼都可以調用它。

 

代碼實例:

class Single
{
    /**
     * 定義一個靜態私有的屬性存儲實例化對象
     */
    private static $instance;

    /**
     * Single constructor. 構造方法 private,防止外部 new創建此類實例
     */
    private function __construct()
    {
    }

    /**
     * 定義一個靜態 public方法,這是獲取本類實例的唯一全局訪問點
     */
    public static function getInstance()
    {
        // 判斷是否存在已有實例,不存在則new一個新實例,確保只有一個實例
        if (empty(self::$instance)) {
            self::$instance = new Single();
        }
        return self::$instance;
    }
}

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章