使用注意事项:
1.使用时不能用反射模式创建单例,否则会实例化一个新的对象
2.使用懒单例模式时注意线程安全问题
3.饿单例模式和懒单例模式构造方法都是私有的,因而是不能被继承的,有些单例模式可以被继承(如登记式模式)
/**
* Created by PhpStorm.
* auther: sgj
* Date: 2019/9/5
* Time: 20:58
*/
/*
1.单例模式只能通过自身进行实例化
2.拥有一个保存对象实例的静态成员变量
3.拥有一个访问这个实例的公共静态方法(常用getInstance()方法进行实例化单例类 )
4.通过instanceof操作符可以检测到类是否已经实例化了
*/
class single
{
/**
* 私有构造函数
* single constructor.
*/
private function __construct()
{
}
/**
* 私有的构造函数防止克隆
*/
private function __clone()
{
// TODO: Implement __clone() method.
}
/*存储实例的静态方法*/
private static $interion;
/**
* 通过这个来获取实例
* @return single
*/
public function getInstance(){
if (empty($interion)){
self::$interion=new single();
}
return self::$interion;
}
}
1.单例模式只能通过自身进行实例化
2.拥有一个保存对象实例的静态成员变量
3.拥有一个访问这个实例的公共静态方法(常用getInstance()方法进行实例化单例类 )
4.通过instanceof操作符可以检测到类是否已经实例化了
单例模式的缺点:
没有抽象层难以扩展 不适合变化性较强的实例单例类的职责过重,在一定程度上违背了“单一职责原则”。