单例模式
1.概述 单例模式用来保证系统中一个类只有一个实例且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。 我的理解是:单例模式的实质就是私有化构造函数(保证只有一个实例)、析构函数(保证只有单例类能删除自己,防止其他类删除单例类造成悬浮引用)、拷贝构造函数(禁止类拷贝)、重载=操作符(禁止类赋值)。 2.常用的场景 单例模式常常与工厂模式结合使用,因为工厂只需要创建产品实例就可以了,在多线程的环境下也不会造成任何的冲突,因此只需要一个工厂实例就可以了。 3.全局变量和单例模式的比较 采用全局或者静态变量,会影响封装性,难以保证别的代码不会对全局变量造成影响。 全局变量可以提供单例模式实现的全局访问这个功能,但它不能保证应用程序只有一个实例。 4.代码及分析 1) 懒汉式单例模式 懒汉式是典型的时间换空间 。就是每次获取实例都会进行判断,看是否需要创建实例,浪费判断的时间。 1 class Singleton { 2 public: 3 static Singleton* getInstance(); 4 //析构的时候释放资源~ 5 ~Singleton() { 6 if( (_instance != NULL) 7 delete _instance; 8 } 9 protected: 10 Singleton(); 11 private: 12