概念
单例模式:singleton,是一种类的设计只会最多产生一个对象的设计思想
- 单例模式的类只能在一次运行中产生一个对象
- 单例模式为了解决如何只产生一个对象,需要使用以下解决方案,简称
三私一公
:- 私有化构造方法:不让在外部产生多个对象
- 私有化克隆方法:不允许对象被克隆产生新对象
- 公有化静态方法:运行进入类内部产生对象
- 私有化静态属性:保存已经产生的对象
栗子
<?php
class Singleton
{
/**
* 增加静态属性:私有,不允许外部修改,否则外部修改之后就没有意义了
* @var null
*/
private static $object = null;
/**
* 禁止在类外部实例化对象
* Singleton constructor.
*/
private function __construct()
{
}
/**
* @return Singleton|null
*/
public static function getInstance()
{
//判断内部属性是否存在对象(is_object函数):最好的判定是存的对象是当前类的 instanceof
if (!(self::$object instanceof self)) {
//当前保存的内容不是当前类的对象
self::$object = new self();
}
//返回对象给外部
return self::$object;
}
/**
* 在Singleton类中增加私有化的__clone()方法
* 禁止对象的克隆,即在类内部私有化克隆方法
*/
private function __clone()
{
}
}
$obj1 = Singleton::getInstance();
$obj2 = Singleton::getInstance();
var_dump($obj2, $obj1);
网友评论