单例模式
定义: 简单的说,整个应用一次访问流程中只有一个实例对象的设计模式。
我对单例模式的理解就是可以减少new的操作,因为new操作的时候会消耗内存,如果进行大量的new操作,就会消耗大量的内存。
例如:
输出结果:
这里每一次new 操作就会增加内存的占用。而使用单例模式则不会造成这种情况。
单例模式的要点
1.某个类只能有一个实例。
2.必须自行创建这个实例。
3.必须自行向整个系统提供这个实例。
下面是创建一个单例类的示例:
/**
* @purpose: 创建一个单例类
* Class Single
*/
class Single {
/**
* @var Object 保存类实例的静态成员变量
*/
private static $_instance;
/**
* Single constructor. 私有的 构造方法
*/
private function __construct(){
echo ‘This is a Constructed method;’;
}
/**
* @purpose: 创建私有__clone方法防止对象被复制克隆
*/
private function __clone(){
}
/**
* @return Single|Object 单例方法,用于访问实例的公共的 静态方法
*/
public static function getInstance(){
if(!(self::$_instance instanceof self)){
self::$_instance = new self;
}
return self::$_instance;
}
}
现在我们进行 实例化 输出:
这里可以看出就算多次实例化内存也没有进行增长;
单例模式的用处
1.单例模式可以应用在数据库的操作类上
2.单例模式可应用在网站的计数器上
3.应用程序的日志应用,一般都使用单例模式实现,这一般是由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加。
4.Web应用的配置对象的读取,一般也应用单例模式,这个是由于配置文件是共享的资源。