一、讲在前面的废话
笔者曾经多次面试都遇到了这个问题,请你说一下软件的设计模式,一般我们都会把23种模式例举几个出来,如果没有说错,你一定会列举单例设计模式,这样的话你就中了面试官的圈套了。接下来的一般情况就是让你细说单例设计模式,然后写代码。
二、单例设计模式概述
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。下面是构建单例设计模式的条件:
- 是单例模式的类只提供私有的构造函数,
- 是类定义中含有一个该类的静态私有对象,
- 是该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象
三、单例设计模式的分类
我们都知道,单例设计模式分为懒汉式和饿汉式,而他们两种有涉及到线程是否安全。
下面我们通过代码来分析
懒汉式代码
class A_lazy
{
private:
A_lazy(){}
public:
static A_lazy* getInstance()
{
if(s_sgl == NULL)
{
s_sgl = new A_lazy;
}
return s_sgl;
}
~A_lazy(){}
private:
static A_lazy* s_sgl;
};
A_lazy *A_lazy::s_sgl = NULL;