1. 程式人生 > >PHP -- 單例模式,程式碼演示

PHP -- 單例模式,程式碼演示

單例模式: 單例模式又稱為職責模式,它用來在程式中建立一個單一功能的訪問點,通俗地說就是例項化出來的物件是唯一的。

所有的單例模式至少擁有以下三個必須和一個必要元素:

1

必須擁有一個private的建構函式

2

必須擁有一個儲存類的例項的靜態成員變數

3

必須擁有一個訪問這個例項的公共的靜態方法

4

必要擁有一個防止克隆的函式

單例類不能再其它類中直接例項化,只能被其自身例項化。它不會建立例項副本,而是會向單例類內部儲存的例項返回一個引用。


下面是程式碼演示:

class people
{
    //靜態成員變數
    static private $instance;
    private $config;
    // private的建構函式
    private function __construct($config){
        $this->config = $config;
    }
    // 防克隆函式
    private function __clone(){
        // TODO: Implement __clone() method.
    }
    // 靜態方法
    static public function getConfig($config){
        if (!self::$instance instanceof self) {
            self::$instance = new self($config);
        }
        return self::$instance;
    }
    public function getName(){
        echo $this->config;
    }
}

 執行以下程式碼:

$a = people::getConfig(1);
$a->getName();
echo "<br/>";
$b = people::getConfig(3);
$b->getName();

網頁會顯示:

$a建立物件後,引數是1 ;

$b沒有建立物件,而是直接使用$instance儲存的唯一物件,所以輸出的引數並沒有變為3。

參考資料:

https://www.cnblogs.com/yuyu1993/p/5576010.html

http://www.cnblogs.com/DeanChopper/p/4761253.html

https://www.cnblogs.com/wwjchina/p/7724271.html

歡迎補充!

千而の大獅子!