设计模式(一)单例模式Singleton
来源:互联网 发布:c 利用java公钥加密 编辑:程序博客网 时间:2024/04/30 17:16
单例介绍
- 单例模式不能用静态成员对象来实现,而只能用静态成员的指针来实现,因为项目大的时候会有很多单例,静态对象无法保证初始化次序,有可能会导致运行时错误(用的时候还没实例化)。
- 为了防止用户有其他途径意外创建对象,默认构造函数、复制构造函数应该声明为私有。noncopyable
- boost提供了非线程安全的实现,可以直接使用
- 线程安全的目前还没有
非线程安全的Boost单例实现:
#include<iostream>using namespace std;#include "boost/serialization/singleton.hpp"using namespace boost::serialization;class A {public:A(void){cout<<"A()"<<endl;}~A(void){cout<<"~A()"<<endl;}void print(void)const {cout<<"A::print()"<<endl;}};class B {public:B(void){cout<<"B()"<<endl;}~B(void){cout<<"~B()"<<endl;}void print(void)const {singleton<A>::get_mutable_instance().print();//获取非const实例,非线程安全的}};void global_print(void){singleton<A>::get_const_instance().print();//获取const实例,线程安全的}int main(int,char**){singleton<A>::get_const_instance().print();//获取const实例,线程安全的global_print();B b;b.print();return 0;};运行结果:
A()
A::print()
A::print()
B()
A::print()
~B()
~A()
请按任意键继续. . .
线程安全的单利:
ACE库实现了线程安全的单利
- 设计模式 一 单例模式Singleton
- java设计模式(一):Singleton(单例模式)
- 设计模式(一):单例模式(Singleton Pattern)
- 26种设计模式--(一)单例模式 Singleton
- 设计模式(一)单例模式Singleton
- java设计模式一(单例模式singleton)
- 设计模式(一)单例模式 Singleton pattern
- java设计模式----单例模式Singleton(一)
- 设计模式实践(一)单例模式(Singleton)
- 设计模式---单例模式(singleton)
- 设计模式--单例模式(Singleton)
- 设计模式--单例模式(Singleton)
- 设计模式-单例模式(Singleton)
- 【设计模式】-单例模式(Singleton)
- 设计模式---单例模式(singleton)
- 设计模式 -- 单例模式(Singleton)
- 设计模式:单例模式(Singleton)
- 设计模式:单例模式(Singleton)
- usaco Money Systems
- Ext.net一个小常识
- 乐观人士如是说:乐观人群的10个好习惯
- ORA-00917: 缺失逗号 一个小错误恶心了我一个小时
- hadoop搭建异常 /tmp/hadoop-root/mapred/system/jobtracker.info could only be replicated to 0 nodes, inste
- 设计模式(一)单例模式Singleton
- centos szrz
- javascript相等运算符与等同运算符(转自www.jqueryba.com)
- memcached学习笔记
- ExtJS grid 带参数查询分页 store 传额外参数解决办法
- [转]用 PuTTy 实现本地文件上传下载
- 学习总结-python列表去重
- java集合总结一
- 修改tomcat命令窗口的名字