7.单例模式
1單例的核心內(nèi)容是:
A:有靜態(tài)的類成員變量。獲得實(shí)例的方式是通過(guò)公有的getInstance()方法。
2單例模式的作用:通過(guò)單例模式,讓一個(gè)類在項(xiàng)目中只有一個(gè)實(shí)例。
3單例模式具體描述
//單例模式:單例模式確保某一個(gè)類只有一個(gè)實(shí)例,
//而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例單例模式
//。單例模式只應(yīng)在有真正的“單一實(shí)例”的需求時(shí)才可使用。
//
//俺有6個(gè)漂亮的老婆,她們的老公都是我,
//我就是我們家里的老公Sigleton,她們只要說(shuō)道“老公”,
//都是指的同一個(gè)人,那就是我(剛才做了個(gè)夢(mèng)啦,哪有這么好的事)。
4.單例模式類圖
5.代碼:
#include <iostream>
#include <string>
using namespace std;
//單例模式:單例模式確保某一個(gè)類只有一個(gè)實(shí)例,
//而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例單例模式
//。單例模式只應(yīng)在有真正的“單一實(shí)例”的需求時(shí)才可使用。
//
//俺有6個(gè)漂亮的老婆,她們的老公都是我,
//我就是我們家里的老公Sigleton,她們只要說(shuō)道“老公”,
//都是指的同一個(gè)人,那就是我(剛才做了個(gè)夢(mèng)啦,哪有這么好的事)。
?
//通過(guò)下面一句使私有的變成共有的
//#definepublic private
//下面這種也只有一個(gè)實(shí)例
class
{
public:
protected:
private:
} al;
?
//單例實(shí)現(xiàn)代碼:
class Singleton
{
private:
??? int i;
??? static Singleton *instance;
??? Singleton(int i)
??? {
??????? this->i = i;
??? }
public:
??? //通過(guò)下面的方式創(chuàng)建實(shí)例
??? static Singleton *getInstance()
??? {
??????? return instance;
??? }
??? void show()
??? {
??????? cout << i << endl;
??? }
};
?
//靜態(tài)私有成員必須在類外部初始化,相當(dāng)于把下面的移到成員所在位置
Singleton* Singleton::instance = new Singleton(8899);
?
class A :public Singleton
{
};
?
int main()
{
??? Singleton *s = Singleton::getInstance();
??? Singleton *s2 = A::getInstance();
??? //下面輸出的結(jié)果為1,表示是單例的
??? cout << (s == s2) << endl;
??? cin.get();
??? return 0;
}
運(yùn)行結(jié)果如下:
1
總結(jié)
- 上一篇: 最原初意义的宪法被称为国家组织法表明国家
- 下一篇: 8.迭代器模式