简述单例模式
1、含义
一种类的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局提供这个实例,它会不创建实例副本,而是向单例类内部存储的实例返回一个引用
2、三个特征
1、需要一个保存类的唯一实例的静态成员变量
private static $_instance;
2、构造函数和克隆函数必须声明为私有化,防止外部程序new这个类从而失去单例模式的意义
private function __construct() {
}
private function clone() {
}
3、必须提供一个访问这个实例的公共的静态方法,从而返回这个实例的一个引用
public static function getInstance() {
if(! (self::$_instance instanceof self) )
{
self::$_instance = new self();
}
return self::$_instance;
}
3、为什么使用单例模式
php是一种解释型脚本语言,这种运行机制使得每个php页面被解释执行后,所有相关的资源都会被回收。也就是说php在语言级别上,没有办法让某个对象常驻内存,这和asp.net,Java等编译型是不同。比如在Java中单例会一直存在于整个运行程序的生命周期里,变量是跨页面级别的,真正做到这个实例在整个应用程序生命周期中的唯一性。然而在php中,所有的变量无论是全局变量还是类的静态成员都是页面级别,每次页面被执行时都会重新建立新的对象,都会在页面被执行完毕后被清空。这样似乎php单例模式就没有什么意义了,所以php单例模式我觉得只是,针对单次页面级的请求时,出现多个应用场景,并需要共享同一个对象资源时是非常有意义的
4、单例模式在PHP中的应用场景
1、应用程序与数据库的交互
一个应用中会存在大量的数据库操作,比如通过数据库句柄来连接数据库这个操作,单例模式可以避免重复的new操作,因为每一次new操作都会消耗内存资源和系统资源
2、控制配置信息
如果一个系统中需要一个类来全局控制某些配置信息,那么使用单例模式可以很方便的实现
转自https://www.cnblogs.com/lansetiankongblog/p/8378514.html