单例模式是最简单的设计模式,
意图:
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
适用性:
只能有一个实例而且客户可以从一个众所周知的访问点访问它时。
当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
原理图:
代码实现:
<?php
class Singleton {
// private static $_instance = array();private static $_instance = '';public $num = 0;public static function getInstance() {if ( empty(self::$_instance) ){self::$_instance = new self();}
// if ( isset(self::$_instance[]) ){
// self::$_instance = new self();
// }return self::$_instance;}public function sayName($name = 'zhangsan') {echo $name,"<br />";$this->num++;}public function sayNum(){echo $this->num,"<br />";}
}$test1 = Singleton::getInstance();
$test1->sayName(); //zhangsn
$test1->sayNum(); //1
$test2 = Singleton::getInstance();
$test2->sayName('lisi'); //lisi
$test2->sayNum(); //2