带注册功能的单件(Singleton)模式的C++实现
2012-10-20 16:06
477 查看
带注册功能的单件(Singleton)模式的C++实现
#include <iostream>
#include <string>
#include <map>
using namespace std;
class Singleton
{
public:
static void Register(string pName, Singleton* pItem);
static Singleton* Instance(string pName);
protected:
Singleton(){}
virtual ~Singleton(){}
private:
static map<string, Singleton* > m_Map;
};
map<string, Singleton* > Singleton::m_Map;
void Singleton::Register(string pName, Singleton* pItem)
{
m_Map.insert(make_pair(pName,pItem));
}
Singleton* Singleton::Instance(string pName)
{
Singleton* pItem = NULL;
map<string, Singleton* >::const_iterator iter = m_Map.begin();
while ( (iter!= m_Map.end()) && ( (*iter).first != pName) )
{
iter++;
}
if (iter != m_Map.end())
{
pItem = (*iter).second;
}
return pItem;
}
template<class Type>
class ConSingleton :public Singleton
{
public:
ConSingleton(string pName)
{
Register(pName, this);
m_strName = pName;
};
virtual ~ConSingleton(){};
void prt()
{
cout << m_strName <<endl;
}
private:
string m_strName;
};
int main()
{
ConSingleton<int>* pConSingleton = new ConSingleton<int>("wang");
ConSingleton<int>* p = (ConSingleton<int>*) Singleton::Instance("wang");
p->prt();
return 0;
}
相关文章推荐
- 五种单件模式之Singleton的实现方法详解
- 四种方法实现单件(Singleton)模式
- ISingletonDisplayer 单件模式显示器C#实现
- 多线程安全的Singleton单件模式在C++,java与C#下的实现
- 基于私有化构造器与析构器的单件模式(singleton) 实现及注释
- JSP模式2 实现用户注册的功能
- singleton 单件模式的实现
- Singleton(单件)模式的两种实现方法
- PHP 实现单件(singleton)模式
- 单件模式在C#中的实现--Implementing the Singleton Pattern in C#
- 【读书笔记】HeadFirst设计模式——单件不简单:详述实现Singleton模式需要考虑的方方面面
- JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)
- 【剑指offer】题2:实现单件(singleton)模式
- Android之SqliteDatabase(MVP模式)实现用户登录注册功能
- JSP模式2 实现用户注册的功能
- JSP模式2 实现用户注册的功能
- Head First设计模式C++实现--第五章:单件(Singleton)模式
- JSP模式2 实现用户注册的功能
- JSP模式2 实现用户注册的功能
- Head First设计模式 C++实现-Singleton(单件模式)