一、单例模式是什么?有什么作用?
单例模式就是让类 只实例化(new)一次,使用单例模式, 则可以避免大量的new 操作消耗的资源。
二、实现单例模式
1)三私一公(原理)
①、私有静态属性,又来储存生成的唯一对象
②、私有构造函数
③、私有克隆函数,防止克隆——clone
④、公共静态方法,用来访问静态属性储存的对象,如果没有对象,则生成此单例
2)关键词instanceof,检查此变量是否为该类的对象、子类、或是实现接口。
class SingleInstance{
private function _construct(){
// 私有构造函数
}
private static $instance; // 私有属性,存储类对象
private function _clone(){ // 私有克隆函数,防止clone
}
public static function getInstance(){ // 公有获取 实例化对象方法
if(!self::$instance instanceof SingleInstance){
self::$instance=new SingleInstance();
}
return self ::$instance;
}
}
三、应用场景(请求次数较多的类)
1、数据库类
2、网站计数器
3、应用程序的日志应用
4、Web应用的配置对象的读取