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圖如下: