1单例的核心内容是:
A:有静态的类成员变量。获得实例的方式是通过公有的getInstance()方法。
2单例模式的作用:通过单例模式,让一个类在项目中只有一个实例。
3单例模式具体描述
//单例模式:单例模式确保某一个类只有一个实例,
//而且自行实例化并向整个系统提供这个实例单例模式
//。单例模式只应在有真正的“单一实例”的需求时才可使用。
//
//俺有6个漂亮的老婆,她们的老公都是我,
//我就是我们家里的老公Sigleton,她们只要说道“老公”,
//都是指的同一个人,那就是我(刚才做了个梦啦,哪有这么好的事)。
4.单例模式类图
5.代码:
#include <iostream>
#include <string>
using namespace std;
//单例模式:单例模式确保某一个类只有一个实例,
//而且自行实例化并向整个系统提供这个实例单例模式
//。单例模式只应在有真正的“单一实例”的需求时才可使用。
//
//俺有6个漂亮的老婆,她们的老公都是我,
//我就是我们家里的老公Sigleton,她们只要说道“老公”,
//都是指的同一个人,那就是我(刚才做了个梦啦,哪有这么好的事)。
//通过下面一句使私有的变成共有的
//#definepublic private
//下面这种也只有一个实例
class
{
public:
protected:
private:
} al;
//单例实现代码:
class Singleton
{
private:
int i;
static Singleton *instance;
Singleton(int i)
{
this->i = i;
}
public:
//通过下面的方式创建实例
static Singleton *getInstance()
{
return instance;
}
void show()
{
cout << i << endl;
}
};
//静态私有成员必须在类外部初始化,相当于把下面的移到成员所在位置
Singleton* Singleton::instance = new Singleton(8899);
class A :public Singleton
{
};
int main()
{
Singleton *s = Singleton::getInstance();
Singleton *s2 = A::getInstance();
//下面输出的结果为1,表示是单例的
cout << (s == s2) << endl;
cin.get();
return 0;
}
运行结果如下:
1