PHP中的单例模式
单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。
要点
- 一个类只能有一个对象;
- 必须是自行创建这个类的对象;
- 要想整个系统提供这一个对象;
实现角度
- 私有静态属性,又来储存生成的唯一对象
- 私有构造函数
- 私有克隆函数,防止克隆__clone
- 公共静态方法,用来访问静态属性储存的对象,如果没有对象,则生成此单例
简单示例:
class SingleInstance{
private function _construct(){
}
private static $instance;
private function _clone(){
}
public static function getInstance(){
if(!self::$instance instanceof SingleInstance){
self::$instance=new SingleInstance();
}
return self ::$instance;
}
}
单例模式优点
- 单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。
- 因为类控制了实例化过程,所以类可以灵活更改实例化过程。