设计模式之单例模式
单例模式【Single】
单例模式在面向对象开发中比较常用,也是最简单的一种模式。单例就是单个实例,单个对象的意思。就是我们去实例化一个类的时候,不管调用多少次,都永远只有一个实例。这样就节省内存分配开支
原理
将构造函数__construct
设置为私有的private,对外提供一个静态方法.一般是用getInstance获取实例。在getInstance方法里做统一判断是否有new一个实例。存在的话就直接返回。没有就new一个。
class Single { private $name;//声明一个私有的实例变量 private function __construct(){//声明私有构造方法为了防止外部代码使用new来创建对象。 } private function __clone(){//防止克隆对象 } static public $instance;//声明一个静态变量(保存在类中唯一的一个实例) static public function getinstance(){//声明一个getinstance()静态方法,用于检测是否有实例对象 if(!self::$instance) self::$instance = new self(); return self::$instance; } public function setname($n){ $this->name = $n; } public function getname(){ return $this->name; } } $oa = Single::getinstance(); $ob = Single::getinstance(); $oa->setname('hello world'); $ob->setname('good morning'); echo $oa->getname();//good morning echo $ob->getname();//good morning