标签:des c style class blog code
单一模式的几个注意点:
一) 设计单一模式,首先需要把构造函数给私有化了,不让外界访问,那么外界只能通过提供的函数获取一个新的类。
二) C++的单一模式,记得要在类外初始化一个类,否则或内存出错的。
三) 这个唯一的类必须是要静态的
程序:
#ifndef _SINGLETON_H
#define _SINGLETON_H
#include <iostream>
#include <string>
using namespace std;
class DuGuJiuJian
{
string FounderName;
DuGuJiuJian(string name) : FounderName(name)
{
}
~DuGuJiuJian()
{
if (Founder) delete Founder;
}
public:
void poJian()
{
cout<<"破剑式……\n";
}
void poDao()
{
cout<<"破刀式……\n";
}
inline static DuGuJiuJian *getInstance(string name = "No Name")
{
if (!Founder)
{
Founder = new DuGuJiuJian(name);
}
return Founder;
}
string getFounder()
{
return FounderName;
}
private:
static DuGuJiuJian *Founder;
};
DuGuJiuJian *DuGuJiuJian::Founder = nullptr;
void SingletonDuGuJiuJian_Run()
{
DuGuJiuJian *jian = DuGuJiuJian::getInstance("独孤求败");
cout<<"Founder is:"<<jian->getFounder()<<endl;
DuGuJiuJian *jian_2 = DuGuJiuJian::getInstance("令狐冲");
cout<<"Founder is:"<<jian_2->getFounder()<<endl;
cout<<"令狐冲";
jian_2->poDao();
cout<<"令狐冲";
jian_2->poJian();
cout<<"Founder is:"<<DuGuJiuJian::getInstance()->getFounder()<<endl;
}
#endif运行:
因为是单一模式,所以只能有一个创始人独孤求败,呵呵,冲哥可以使用,不能是创始人。
当然,本类不是十分完善,比如:还有多线程的时候可能会出问题,内存释放需要处理好,可以使用临时静态类。
不过这个模式的概念就是这样了。
Design Pattern Singleton 单一模式,布布扣,bubuko.com
标签:des c style class blog code
原文地址:http://blog.csdn.net/kenden23/article/details/27965279