设计模式中的单例模式有懒汉单例模式和饿汉单例模式两种,这部分内容记录在http://blog.csdn.net/qq_29344757/article/details/75575217中。
懒汉单例模式的设计步骤为:
(1) 将构造函数的访问属性设置为private,不让该类中外部生成对象
(2) 将标志指针变量初始化为NULL
(3) 当外部需要使用对象时,调用类的静态成员函数,该函数判断:
若标志指针变量为NULL,则动态生成对象,并且将该对象的地址赋值给标志指针变量,最后返回该对象的地址;
若标志指针变量不为NULL,即其值等于前面生成的对象的地址,那么直接返回该标志指针
(正是因为这个判断操作,使得懒人单例模式是一种非线程安全的设计模式)
饿汉单例模式的设计步骤为:
(1) 将构造函数的访问属性设置为private,不让该类中外部生成对象
(2) 将标志指针变量初始化为动态生成的对象的地址
(3) 当外部需要使用对象时,调用类的静态成员函数,该函数直接返回标志指针
不论是二者中的哪一种,我们要将设计的类赋予单例模式属性时,都需要定义静态成员指针变量p和静态成员函数instance()以获得该类唯一对象的地址,这一部分可以提取出来,作为一个单例类模板:
1. 饿汉单例类模板