C++設計模式:Singleton的模板實現之一 (轉)
題目:C++設計:Singleton的模板實現之一
型別:原創
作者:古斌亮
時間:2002.12.25
E : @163.com">KingLinux@163.com
在/"> 和天極網 看了兩篇關於設計模式:Singleton的C++實現的文章,
自覺的學到不少東西(:)),在這裡我也寫了一個C++模板的實現之一,望各位大蝦多多指教,也希望可以達到拋磚引玉的作用.
關於的Singleton的原理可以參考天極網《C++設計模式之Singleton》或中的《Singleton模式的C++實現研究》或是書本《設計模式》,這裡就不說了,請多包涵!
翠花,上程式碼!
/////////////////////////////////
//singleton template file
//SingleEx.h
#ifndef SINGLETONEX__H__
#define SINGLETONEX__H__
//File Name : SingletonEx.h
//作用 : 提供單件模板功能(singleton template)
//Copyright(C) C++
// Visual C++ 6.0 , GCC Ver2.95.3-6 編譯透過
//作者:古斌亮
//時間:2002.12.25
// :
template
class CSingletonBase
{
protected:
inline static T* Create(void)
{
if(m_pt==NULL)
{
m_pt=new T();
}
return m_pt;
}
inline static void Free(void)
{
delete m_pt;
m_pt=NULL;
}
protected:
CSingletonBase()
{
}
virtual ~CSingletonBase()
{
delete m_pt;
}
private:
CSingletonBase(const CSingletonBase& sig)
{
}
CSingletonBase& operator = (const CSingletonBase& sig)
{
}
private:
static T * m_pt;
};
template
T* CSingletonBase
template
class CSingletonEx : private CSingletonBase
{
public:
CSingletonEx()
{
}
virtual ~CSingletonEx()
{
}
public:
virtual T* Instance(void)
{
return CSingletonBase
}
virtual void Release(void)
{
CSingletonBase
}
private:
CSingletonEx(const CSingletonEx& sig)
{
}
CSingletonEx& operator = (const CSingletonEx& sig)
{
}
};
#endif //SINGLETONEX__H__
////////////////////////////////
//測試類
//Doc.h
#ifndef CDOC__H__
#define CDOC__H__
class CDoc //測試類
{
public:
CDoc(const std::string name = "NoName"):m_name(name){}
virtual ~CDoc(){}
public:
inline
std::string Name()
{
return m_name;
}
inline
void SetName(const std::string& name)
{
m_name=name;
}
protected:
std::string m_name;
};
#endif //CDOC__H__
////////////////////////////////////
//測試
//main.cpp
#include
#include
#include "singletonex.h"
#include "doc.h"
void TestSingletonEx(void)
{
CSingletonEx
CDoc *pdoc = s.Instance();
std::cout< pdoc->SetName("pdoc change: My SingletonEx"); CDoc *p2 = s.Instance(); std::cout< p2->SetName("p2 change: SingletonEx "); std::cout< void main(void) //the end!!
{
std::cout< TestSingletonEx();
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992355/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計模式、用Delphi實現---->Singleton 模式 (轉)設計模式
- C++完美實現Singleton模式[轉]C++模式
- 我所理解的設計模式(C++實現)——單例模式(Singleton Pattern)設計模式C++單例
- 模板方法模式(c++實現)模式C++
- Singleton模式之Delphi實現 (轉)模式
- JScript下Singleton模式的實現。 (轉)JS模式
- 設計模式(四)Singleton設計模式設計模式
- Singleton設計模式設計模式
- Go 實現常用設計模式(七)模板方法模式Go設計模式
- 設計模式——單例模式C++實現設計模式單例C++
- 兩種Delphi實現Singleton模式方法 (轉)模式
- 設計模式 - Singleton in Java設計模式Java
- C++用多種方式實現Singleton單例模式C++單例模式
- 設計模式實戰-模板方法模式設計模式
- 設計模式—singleton(單例模式)設計模式單例
- 設計模式 - 單例模式(Singleton)設計模式單例
- 設計模式入門(1)------單件(Singleton) (轉)設計模式
- 關於多型實現Singleton模式的探討 (轉)多型模式
- 從C#的Singleton設計模式實現看.NET Framework特性對開發者的重要性 (轉)C#設計模式Framework
- 使用C# (.NET Core) 實現單體設計模式 (Singleton Pattern)C#設計模式
- Singleton 單例設計模式單例設計模式
- 設計模式之——Singleton pattern設計模式
- C++模板超程式設計[metaprogram] (轉)C++程式設計
- java設計模式-單例模式SingletonJava設計模式單例
- 設計模式之單例模式 - Singleton設計模式單例
- 設計模式——3單例模式(Singleton)設計模式單例
- 設計模式之Singleton - 單態模式設計模式
- 設計模式-模板模式設計模式
- 設計模式——模板模式設計模式
- 設計模式篇之一文搞懂如何實現單例模式設計模式單例
- Java設計模式——模板設計模式Java設計模式
- 深入實踐c++模板程式設計C++程式設計
- 設計模式、用Delphi實現---->Builder模式 (轉)設計模式UI
- 設計模式——原型模式(C++)——演算法實現設計模式原型C++演算法
- 模板設計模式設計模式
- PHP設計模式(四)單例模式(Singleton)PHP設計模式單例
- 設計模式之單例模式(Singleton Pattern)設計模式單例
- Java設計模式——單例模式(Singleton pattern)Java設計模式單例