Design Pattern Singleton 单一模式

2015-07-24 06:51:46 · 作者: · 浏览: 62

单一模式的几个注意点:

一) 设计单一模式,首先需要把构造函数给私有化了,不让外界访问,那么外界只能通过提供的函数获取一个新的类。

二) C++的单一模式,记得要在类外初始化一个类,否则或内存出错的。

三) 这个唯一的类必须是要静态的


程序:

#ifndef _SINGLETON_H
#define _SINGLETON_H

#include 
  
   
#include 
   
     using namespace std; class DuGuJiuJian { string FounderName; DuGuJiuJian(string name) : FounderName(name) { } ~DuGuJiuJian() { if (Founder) delete Founder; } public: void poJian() { cout<<"破剑式……\n"; } void poDao() { cout<<"破刀式……\n"; } inline static DuGuJiuJian *getInstance(string name = "No Name") { if (!Founder) { Founder = new DuGuJiuJian(name); } return Founder; } string getFounder() { return FounderName; } private: static DuGuJiuJian *Founder; }; DuGuJiuJian *DuGuJiuJian::Founder = nullptr; void SingletonDuGuJiuJian_Run() { DuGuJiuJian *jian = DuGuJiuJian::getInstance("独孤求败"); cout<<"Founder is:"<
    
     getFounder()<
     
      getFounder()<
      
       poDao(); cout<<"令狐冲"; jian_2->poJian(); cout<<"Founder is:"<
       
        getFounder()<
        
         

运行:



因为是单一模式,所以只能有一个创始人独孤求败,呵呵,冲哥可以使用,不能是创始人。


当然,本类不是十分完善,比如:还有多线程的时候可能会出问题,内存释放需要处理好,可以使用临时静态类。

不过这个模式的概念就是这样了。