PHP設計模式——單例模式

好1234發表於2015-04-21

宣告:本系列部落格參考資料《大話設計模式》,作者程傑。

       單例模式也稱單態,是23種設計模式中最簡單的一種,從他的名字就可以知道他的核心思想,單例模式就是系統中只有一個這樣的物件,物件只有一個,在Java或者C#中,單例模式一般有兩種,分別是懶漢式、餓漢式,但是在PHP中常用的就是懶漢式,由於PHP是單執行緒的,懶漢式也不存在雙重驗證。

        懶漢式具體程式碼:

       

<?php
/**
 * Created by PhpStorm.
 * User: LYL
 * Date: 2015/4/21
 * Time: 21:25
 */

/**懶漢式
 * Class Singleton
 */
class Singleton
{
    //建立靜態物件變數
    private static $instance=null;


    public $age;
    
    //建構函式私有化,防止外部呼叫
    private function __construct()
    {

    }

    //克隆函式私有化,防止外部克隆物件
    private function __clone()
    {

    }

    //例項化物件變數方法,供外部呼叫
    public static function getInstance()
    {
        if(empty(self::$instance))
        {
            self::$instance=new Singleton();
        }

        return self::$instance;
    }
}

        測試程式碼:

           

$single1=Singleton::getInstance();
$single1->age=22;

$single2=Singleton::getInstance();

$single2->age=24;

echo "變數1的age:{$single1->age}<br/>";
echo "變數2的age:{$single2->age}<br/>";

        我們可以看到,變數$single1,$single2的age都是24,說明變數$single1,$single2是一個變數,類Singleton是單例的。

        通過以上程式碼,我可以整理編寫單例模式的三個步驟:

        1.建立一個類靜態變數

        2.私有化建構函式與克隆函式,防止外部呼叫

        3.提供一個外部可以呼叫的靜態方法,例項化第一步建立的靜態變數

            很明顯,單例模式的適用場景就是系統中的物件只需要一個就可以的時候,例如,Java中Spring的Bean工廠,PHP中的資料庫連線等等,只要有這種需求就首先單例模式。

歡迎關注我的視訊課程,地址如下,謝謝。


   PHP物件導向設計模式

相關文章