您的位置:首页 > 编程语言 > C语言/C++

最常用的设计模式----单实例模式(C++ 实现)

2013-10-28 11:31 399 查看
         单实例模式,本人认为最简单的设计模式之一,当然说的简单是针对一般情况,是不考虑线程安全等一系列其他问题。单实例模式也是最最最最常用的模式。我在没有学设计模式之前,都用到了这个模式,只是自己不知道罢了。它保证一个类之类实例化一次,并提供一个访问它的全局控制点。

        比如你的应用程序有一个applicaiotn类,然后有一个个app 对象,显然每个应用只应该有一个这样的对象。 但是你又怕其他开发者一不小心实例化了这个对象。那么比需要单实例模式。

         下面是单实例的结构图:

 


           要做到单实例只需要简单的做到三点点即可:

              A. 将你的将你的构造函数设为private的,这样就没人能创建这个类.

              B.创建一个全局唯一实例

              C.提供一个接口来获得这个实例。

 代码:

#include <iostream>
using namespace std;
class Application
{
public:
~Application(){};
static Application* getApp(){//其实就是上面提到的getInstance()函数
if(!m_instance) {
m_instance = new Application();
}
return m_instance;
}

private:
Application():m_instance(NULL){};
static Application* m_instance;
};

Application* Application::m_instance = NULL;//初始化静态变量

void main()
{
Application* app = Application::getApp();
//app.doSomeThing()...
//Application newApp; //error 无法实例化
system("pause");
}


  

简单吧,但是可惜这个类不是线程安全的,如果要线程安全,需要自己加锁。这点我们后面再实现。所以在需要使用全局配置、唯一资源的时候。防止再次实例化的时候,这时请采用单实例模式。欧拉~~~~

             
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息