当前位置: 首页 > news >正文

展示网站源码下载厦门 网站建设 公司

展示网站源码下载,厦门 网站建设 公司,开发东莞网站制作公司,河东网站建设目录 单例模式是什么#xff1f; 单例模式的应用#xff1a; 饿汉单例模式#xff1a; 1.实现#xff1a; 2.理解#xff1a; 懒汉单例模式#xff1a; 1.实现#xff1a; 2.理解#xff1a; 懒汉和饿汉的优缺点 饿汉模式的优点#xff1a; 饿汉模式的缺点 单例模式的应用 饿汉单例模式 1.实现 2.理解 懒汉单例模式 1.实现 2.理解 懒汉和饿汉的优缺点 饿汉模式的优点 饿汉模式的缺点 懒汉模式的优点 懒汉模式的缺点 单例模式是什么 单例模式顾名思义单个实例就是说一个类只能实例化出一个对象。通常都是作为全局对象要让所有人都能访问但是只有一份。 单例模式的应用 日志记录通常在开发过程中是多人的那就会有很多人来写日志。这时候就需要一个日志记录器用于记录所有模块的日志信息所以这个记录器应该是针对所有人的并且为了避免重复所以使用单例模式 相似的还有配置管理连接池管理全局状态管理 在多线程下的线程安全对象。有些对象需要确保只有一个实例被多个线程共享多个线程使用一个对象。结合锁的使用可以保证这个单独对象在多线程下的安全性和一致性。 饿汉单例模式 1.实现 单例模式的使用方式就是这个对象初始化完后只能通过一个静态接口获取并且要把构造函数和赋值构造拷贝构造都放入私有中。如下代码 class Singleton{public:static Singleton* GetInstance() //通过调用GetInstance() 在类外获得实例{ return _slt; //返回这个实例的地址}void print() //输出实例的数据{cout _x _y endl;for (auto e : _vect){cout e ;}cout endl;}void Add_Vect(int n) //对实例的Vector进行尾插{_vect.push_back(n);}private:int _x;int _y;vectorint_vect;static Singleton _slt; //类内声明//因为要实现单例类全局只能有一个对象因此要将构造函数私有化否则可以在类外随便创建Singleton(int x 1, int y 1, const vectorint v { 1,2,3,4,5 }):_x(x), _y(y), _vect(v){}//禁用拷贝构造和赋值重载Singleton(const Singleton hs) delete;Singleton operator(const Singleton hs) delete;};//类外初始化Singleton Singleton::_slt(2, 2,{ 4,5,6 });//测试懒汉void Test01(){//Singleton::GetInstance()返回创建静态对象的指针Singleton::GetInstance()-print();Singleton::GetInstance()-print();cout 对象1的地址为 Singleton::GetInstance() endl;cout 对象2的地址为 Singleton::GetInstance() endl;//结果为//2 2 //4 5 6//后面两个地址是一样的也就是返回的都是同一个实例} 2.理解 1.饿汉模式解释 顾名思义饿汉就是一个很饿的人只要有东西吃立马就吃了没有任何等待的所以饿汉模式就是在还没进入main函数前就实例好的模式。 2.为什么要把三种构造函数私有化 很显然我们要实现单例那就不允许你在类外调用构造函数生成这个对象所以我们在类内就声明了这个对象初始化时也是只能对这个对象(_slt)初始化。拷贝和赋值也是同理我只能有一个这个对象所以不允许你拷贝和赋值 3.然后实现的饿汉模式对上面代码的解释 static Singleton _slt; //类内声明 我们在类内声明了这个对象然后把三个构造函数给私有化所以现在就只剩下这一个对象 又因为单例模式是全局给所有人使用的所以在类外初始化时是全局初始化 //类外初始化Singleton Singleton::_slt(2, 2,{ 4,5,6 }); 接下来要调用这个对象只能通过先指定要调用的类然后GetInstance()找到这个单例对象。然后才能调用对应的接口。因为无法构造且调用时只能通过接口所以不用担心对象被修改。所以实现了单例模式 static Singleton* GetInstance() //通过调用GetInstance() 在类外获得实例{    return _slt;                //返回这个实例的地址} //Singleton::GetInstance()返回创建静态对象的指针Singleton::GetInstance()-print();Singleton::GetInstance()-print(); 懒汉单例模式 顾名思义懒汉就是很懒的一个人顶级拖延症只有必要时才会做对应的事所以懒汉就是只有要使用这个实例时才进行创建 1.实现 class Singleton{public:static Singleton* GetInstance() //必须定义为静态函数因为只有这样才可以不创建对象去调用它来创建对象{ //否则所有成员函数要通过对象去调用(若不设置为静态的无法创建出来对象构造函数私有了)static Singleton slt(2, 2, {7,8,9}); //静态函数每次只会初始化一次 所以只会在第一次调用时初始化return slt; //下次调用GetInstance()会直接返回slt}void print(){cout _x _y endl;for (auto e : _vect){cout e ;}cout endl;}void Add_Vect(int n){_vect.push_back(n);}private:int _x;int _y;vectorint_vect;//因为要实现单例类全局只能有一个对象因此要将构造函数私有化否则可以在类外随便创建Singleton(int x 1, int y 1, const vectorint v { 1,2,3,4,5 }):_x(x), _y(y), _vect(v){}//禁用拷贝构造和赋值重载Singleton(const Singleton hs) delete;Singleton operator(const Singleton hs) delete;};//测试懒汉void Test01(){//Singleton::GetInstance()返回创建静态对象的指针Singleton::GetInstance()-print(); Singleton::GetInstance()-print();cout 对象1的地址为 Singleton::GetInstance() endl;cout 对象2的地址为 Singleton::GetInstance() endl;//结果为(因为调用两次所以打印两次)//2 2 //7 8 9//2 2//7 8 9//后面两个地址是一样的} 2.理解 1.创建时机 这里我们和饿汉不同的点就是我们把slt的初始化放到了GetInstance()里所以只有有人调用时才会创建这个slt。 2.slt会不会重复创建 当然不会这里就要先理解一下静态成员静态成员在一个对象中只会初始化一次并存入静态区中。所以不会重复创建。当然三个构造函数还是要私有化不能让别人使用构造。 懒汉和饿汉的优缺点 饿汉模式的优点 线程安全在类加载的时候就创建实例不存在多线程环境下的线程安全问题还没进入主函数就创建完实例了所以不用担心线程安全问题。 饿汉模式的缺点 可能会造成资源浪费在程序运行过程中始终存在实例可能会占用一定的资源。不支持延迟加载无法实现延迟加载的特性。就是说如果这个单例很大那在开始时可能会一直卡着直到这个单例初始化完成。 懒汉模式的优点 延迟加载在第一次调用时才创建实例节省资源。节约内存只有在需要时才创建实例避免资源浪费。 懒汉模式的缺点 线程安全性问题在多线程环境下需要额外的同步措施来保证线程安全。可能存在性能问题在第一次调用时需要进行实例化可能会影响程序性能。
http://www.hkea.cn/news/14467246/

相关文章:

  • 合肥做企业建网站那家好个人主页图片素材
  • 贵阳网站如何推广深圳外贸公司联系电话
  • 河南做网站汉狮网络咨询公司名字大全
  • 广州外贸网站效果动漫制作专业的来源
  • 网站支付接口如何做外卖网站建设费用
  • 广东省建设执业资格注册中心网站中国住房和城乡建设部网站造价师注册
  • 电商网站 制作项目网络图关键路径
  • 外币信用卡怎么做网站上用厦门企业网站设计公司
  • 官方网站建设的必要网站生成海报功能怎么做的
  • 做瞹瞹嗳视频网站在线观看杭州模板网站建设系统
  • 怎么制作属于自己的网站东莞关键词seo优化
  • 建设买卖网站要多少钱中国建设银行信用卡旅游卡服务网站
  • 打车网站开发呼和浩特网站制作
  • 有专门为个人网站做推广的吗网站模版如何使用
  • 网站外链建设是什么女装网站建设计划书
  • 网站空间10g建设网站需要哪些域名
  • 鄂州网站制作如何做领券网站
  • 一级域名网站怎样收费的用dreammwea怎么做视频网站
  • 山东天成水利建设 网站建筑公司网站建设方案
  • php网站建设用什么软件重庆h5网站建设模板
  • wordpress网站分析十堰哪家网站制作公司技术好
  • 定制高端网站建设企业潍坊专业网站建设
  • php网站301重定向镇江百度公司
  • 青海做网站最好的公司网络营销有几种方式
  • 磁力链网站怎么做的国家免费技能培训
  • php可以做视频网站吗淄博网站设计丨致信网络
  • 哪家专门做特卖的网站?北京市保障房建设投资中心网站
  • 阿克苏地区建设局网站中国建设银行东莞市网站
  • 举报网站赚钱wordpress 两个网站
  • 长沙建个网站要多少钱seo和sem是什么