单例模式是指在应用程序的范围内只对指定的类创建一个实例。
单例模式包含的对象只有一个,就是单例本身。使用单例模式的类通常有一个私有的构造函数和一个私有的克隆函数,确保用户无法通过创建对象或者克隆的方法对其进行实例化。除此以外模式中还包括一个静态私有成员变量$instance 与静态方法getInstance. getInstance 方法负责对其本身实例化,然后将这个对象存储在$instance静态变量中,以确保只有一个实例被创建。
以下是一个简单的单例模式例子,通过对单例属性$switch的设置实现了对开关状态的改变。
<?PHP class Lock { static private $instance = NULL; private $switch = 0; static function getInstance(){ if(self::$instance == NULL){ self::$instance = new Lock(); } return self::$instance; } private function Lock() { } private function _clone() {} function setLock() { if($this->switch == 0) { $this->switch = 1; } else $this->switch = 0; } function getLock() { return $this->switch; } Lock::getInstance()->setLock(); if(Lock::getInstance()->getLock() == 0) echo "开关状态:关"; else echo "开关状态:开"; } ?>