设计模式系列之单件
2006-04-13 10:00
302 查看
设计模式系列之单件
凌丽软件工作室
http://china.wosens.com
日期:2005.11.24
单件的意义:
1.保证一个类仅有一个实例
2.提供一个全局访问的途径
原理:
1.类的静态变量全局唯一
2.类在没有实例化也可以访问静态方法
3.外界无法访问类的私有变量
实现步骤:
1.定义一个私有静态成员变量,类型为类的指针
2.定义一个公有静态方法
3.使构造方法成为私有或保护成员
实例:
定义如下:
class CSystemPara
{
private:
static CSystemPara* m_pObject; // 实例对象
CSystemPara();
public:
static CSystemPara* Instance(); // 创建实例
static void DestroyInstance(); // 释放实例
};
实现如下:
CSystemPara* CSystemPara::m_pObject=NULL;
CSystemPara* CSystemPara::Instance()
{
if(!m_pObject){
m_pObject=new CSystemPara;
}
return m_pObject;
}
void CSystemPara::DestroyInstance()
{
if(m_pObject) delete m_pObject;
m_pObject=NULL;
}
使用的时候调用 Instance() 即可。
如:
CSystemPara::Instance()->GetName();
在程序结束前调用 CSystemPara::DestroyInstance();
说明:
单件提供了一个比全局变量更安全的一个途径,同时单件可以有子类,用这种方法
来配置一个应用是很容易的,根据应用的变化,甚至可以限制实例的个数(用静态成员
控制)
如果把实例的指针改为对象类型则可以不用写 DestroyInstance 来析构,例如:
static CSystemPara m_pObject; // 实例对象
凌丽软件工作室
http://china.wosens.com
日期:2005.11.24
单件的意义:
1.保证一个类仅有一个实例
2.提供一个全局访问的途径
原理:
1.类的静态变量全局唯一
2.类在没有实例化也可以访问静态方法
3.外界无法访问类的私有变量
实现步骤:
1.定义一个私有静态成员变量,类型为类的指针
2.定义一个公有静态方法
3.使构造方法成为私有或保护成员
实例:
定义如下:
class CSystemPara
{
private:
static CSystemPara* m_pObject; // 实例对象
CSystemPara();
public:
static CSystemPara* Instance(); // 创建实例
static void DestroyInstance(); // 释放实例
};
实现如下:
CSystemPara* CSystemPara::m_pObject=NULL;
CSystemPara* CSystemPara::Instance()
{
if(!m_pObject){
m_pObject=new CSystemPara;
}
return m_pObject;
}
void CSystemPara::DestroyInstance()
{
if(m_pObject) delete m_pObject;
m_pObject=NULL;
}
使用的时候调用 Instance() 即可。
如:
CSystemPara::Instance()->GetName();
在程序结束前调用 CSystemPara::DestroyInstance();
说明:
单件提供了一个比全局变量更安全的一个途径,同时单件可以有子类,用这种方法
来配置一个应用是很容易的,根据应用的变化,甚至可以限制实例的个数(用静态成员
控制)
如果把实例的指针改为对象类型则可以不用写 DestroyInstance 来析构,例如:
static CSystemPara m_pObject; // 实例对象
相关文章推荐
- 设计模式初学者系列-单件模式
- 设计模式系列之(一)-------------------单件模式(Singleton)
- 面向对象的设计模式系列之一:单件模式(Singleton)
- 实战设计模式系列-Singleton(单件)
- 设计模式学习系列-C#的单件模式
- C#设计模式系列:单件模式(Singleton)
- Android设计模式系列(5)--SDK源码之备忘录模式
- Android设计模式系列(11)--SDK源码之策略模式
- 关于 MVVMLight 设计模式系列
- .Net设计模式------单件模式(Singleton Pattern)
- 【设计模式系列】行为型模式之Strategy模式
- [js高手之路] 设计模式系列课程 - DOM迭代器(2)
- 极速理解设计模式系列【目录索引】
- 菜鸟学设计模式系列笔记之设计模式概论
- PHP设计模式系列 - 解释器模式
- [创建型模式系列]Abstract factory of Design Pattern模式设计之抽象工厂模式
- Android设计模式系列(0)--开篇
- 设计模式-系列索引
- 设计模式之单件(Singleton)的应用
- Java设计模式偷跑系列(十八)建模和责任链模式的实现