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

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

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

         下面是单实例的结构图:

 

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

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

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

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

 代码:

[cpp]  view plain  copy
  1. #include <iostream>  
  2. using namespace std;  
  3. class Application  
  4. {  
  5. public:  
  6.     ~Application(){};  
  7.     static Application* getApp(){//其实就是上面提到的getInstance()函数  
  8.           if(!m_instance) {  
  9.               m_instance = new Application();  
  10.           }  
  11.           return m_instance;  
  12.     }  
  13.   
  14. private:  
  15.     Application():m_instance(NULL){};  
  16.     static Application* m_instance;  
  17. };  
  18.   
  19. Application* Application::m_instance = NULL;//初始化静态变量  
  20.   
  21. void main()  
  22. {  
  23.     Application* app = Application::getApp();  
  24.     //app.doSomeThing()...  
  25.     //Application newApp; //error 无法实例化  
  26.     system("pause");  
  27. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值