首页 > 代码库 > Design Pattern Singleton 单一模式
Design Pattern Singleton 单一模式
单一模式的几个注意点:
一) 设计单一模式,首先需要把构造函数给私有化了,不让外界访问,那么外界只能通过提供的函数获取一个新的类。
二) C++的单一模式,记得要在类外初始化一个类,否则或内存出错的。
三) 这个唯一的类必须是要静态的
程序:
#ifndef _SINGLETON_H #define _SINGLETON_H #include <iostream> #include <string> 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:"<<jian->getFounder()<<endl; DuGuJiuJian *jian_2 = DuGuJiuJian::getInstance("令狐冲"); cout<<"Founder is:"<<jian_2->getFounder()<<endl; cout<<"令狐冲"; jian_2->poDao(); cout<<"令狐冲"; jian_2->poJian(); cout<<"Founder is:"<<DuGuJiuJian::getInstance()->getFounder()<<endl; } #endif
运行:
因为是单一模式,所以只能有一个创始人独孤求败,呵呵,冲哥可以使用,不能是创始人。
当然,本类不是十分完善,比如:还有多线程的时候可能会出问题,内存释放需要处理好,可以使用临时静态类。
不过这个模式的概念就是这样了。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。