單例模式--實例講解

class Preferences {
    private $props = array();
    private static $instance;

    private   function __construct(){}

    public static function getInstance(){
        if(empty(self::$instance)){
            self::$instance = new Preferences();
        }
        return self::$instance;
    }

    public function setProperty($key,$value){
        $this->props[$key] = $value;
    }

    public function getProperty($key){
        return $this->props[$key];
    }
}

$pref = Preferences::getInstance();
$pref->setProperty('name','captain');
var_dump($pref);
echo $pref->getProperty('name')."<br>"; //輸出:captain

unset($pref);
$pref2 = Preferences::getInstance();
var_dump($pref2);
echo $pref2->getProperty('name');   //輸出captain



從上面的例子我們可以看出,雖然我們unset了$pref,但是$pref2仍然是可以得到captain的值。打印兩個對象,對象的標識是一樣的。



UML圖如下:



發佈了66 篇原創文章 · 獲贊 6 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章