这篇文章主要介绍了C++中单例模式有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
创新互联自2013年创立以来,先为鹰潭等服务建站,鹰潭等地企业,进行企业商务咨询服务。为鹰潭企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。单例模式概述
个人认为单例模式是设计模式中最为简单、最为常见、最容易实现,也是最应该熟悉和掌握的模式。且不说公司企业在招聘的时候为了考察员工对设计的了解和把握,考的最多的就是单例模式。
单例模式解决问题十分常见,我们怎样去创建一个唯一的变量(对象)?在基于对象的设计中我们可以通过创建一个全局变量(对象)来实现,在面向对象和面向过程结合的设计范式(如 C++中)中,我们也还是可以通过一个全局变量实现这一点。但是当我们遇到了纯粹的面向对象范式中,这一点可能就只能是通过单例模式来实现了,可能这也正是很多公司在招聘 Java 开发人员时候经常考察单例模式的缘故吧。
单例模式在开发中非常有用,具体使用在讨论给出。
模式选择
单例模式典型的结构图为:
图 2-1:单例模式结构图
在单例模式的结构图中可以看到,我们通过维护一个 static 的成员变量来记录这个唯一的对象实例。通过提供一个 staitc 的接口 instance 来获得这个唯一的实例。
单例模式的实现
完整代码示例(code):单例模式的实很简单,这里为了方便初学者的学习和参考,将给出完整的实现代码(所有代码采用 C++实现,并在 VC 6.0 下测试运行)。
代码片断 1:Singleton.h
//Singleton.h #ifndef _SINGLETON_H_ #define _SINGLETON_H_ #include <iostream> using namespace std; class Singleton{ public: static Singleton* Instance(); protected: Singleton(); private: static Singleton* _instance; }; #endif //~_SINGLETON_H_
代码片断 2:Singleton.cpp
//Singleton.cpp #include "Singleton.h" #include <iostream> using namespace std; Singleton* Singleton::_instance = 0; Singleton::Singleton(){ cout<<"Singleton...."<<endl; } Singleton* Singleton::Instance(){ if (_instance == 0){ _instance = new Singleton(); } return _instance; }
代码片断 3:main.cp
//main.cpp #include "Singleton.h" #include <iostream> using namespace std; int main(int argc,char* argv[]){ Singleton* sgn = Singleton::Instance(); return 0; }
代码说明:单例模式的实现无须补充解释,需要说明的是,单例不可以被实例化,因此我们将其构造函数声明为 protected 或者直接声明为 private。
关于单例模式的讨论
单例模式在开发中经常用到,且不说我们开发过程中一些变量必须是唯一的,比如说打印机的实例等等。
单例模式经常和工厂(抽象工厂)模式在一起使用,因为系统中工厂对象一般来说只要一个,笔者在开发 Visual CMCS 的时候,语义分析过程(以及其他过程)中都用到工厂模式来创建对象(对象实在是太多了),这里的工厂对象实现就是同时是一个单例模式的实例,因为系统我们就只要一个工厂来创建对象就可以了。
感谢你能够认真阅读完这篇文章,希望小编分享的“C++中单例模式有什么用”这篇文章对大家有帮助,同时也希望大家多多支持创新互联建站,关注创新互联网站建设公司行业资讯频道,更多相关知识等着你来学习!
另外有需要云服务器可以了解下创新互联建站www.executivehouseboatcharters.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网页标题:C++中单例模式有什么用-创新互联
文章位置:/article44/cdjjee.html
成都网站建设公司_创新互联,为您提供网站排名、营销型网站建设、网站建设、标签优化、微信公众号、网站导航
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联