- 5
- 0
- 约 10页
- 2017-03-05 发布于四川
- 举报
设计模式总结-iSngleton模式
注:文档内容基本上来自于网上,并加上自己的理解而成。有的觉得网友总结得非常好,就完全照搬下来,供学习之用。然而,有的摘抄并没有加上原链接和出处,请谅解。?Singleton模式(单例模式)要点:1. 实质和特点2. 实现手法:JAVA、C++不一样,实现时应该注意那些细节。3. 生命周期的控制:Dead Reference的解决4. 多线程问题:C++:双检锁、Volatile,?JAVA:JAVA中有?lazy initialization hoder?来实现应用场景:数据库连接打印机(可以有几个打印任务,但只能有一个打印机)序列号生成(多个的话可能会导制重复)数据库表中记录ID的生成(非单例的话可能会重复)单例模式的特点:?单例类只能有一个实例。?单例类必须自己创建自己的唯一实例。?单例类必须给所有其它对象提供这一实例。即:?一个私有构造函数——确保用户无法通过new直接实例它;?一个静态私有成员变量instance;?一个静态公有方法Instance()——方法负责检验并实例化自己,然后存储在静态成员变量中,以确保只有一个实例被创建。并且这也是一个全局访问点。例如:class Singleton{public: static Singleton *Instance();? // 单例操作private: Singleton();//关闭缺省构造函数 Singleton(const Singleton);//关闭拷贝构造函数 Singleton operator=(const Singleton);//关闭赋值运算符 ~Singleton();//避免被外界delete static Singleton *m_Instance;? // 单例指针};?实质:单例对象的类必须保证只有一个实例存在单例模式应用:?每台计算机可以有若干个打印机,但只能有一个Printer Spooler,避免两个打印作业同时输出到打印机。?一个具有自动编号主键的表可以有多个用户同时使用,但数据库中只能有一个地方分配下一个主键编号。否则会出现主键重复。Singleton模式的结构:?注:Singleton模式包含的角色只有一个,就是Singleton。Singleton拥有一个私有构造函数,确保用户无法通过new直接实例它。除此之外,该模式中包含一个静态私有成员变量instance与静态公有方法Instance()。Instance方法负责检验并实例化自己,然后存储在静态成员变量中,以确保只有一个实例被创建。—————————————————————————————————————————————————————————————————?(/benny5609/article/details/2438922)?Design Pattern无疑是每个程序员都应该阅读的一本书,这本书给出了23个Pattern,其中最简单的就是Singleton Pattern了,这里,我大概介绍一下自己使用Singleton时曾经用到过的一些做法,希望对大家有些帮助。?意图 Single Pattern的主要是为了保证类仅有一个实例,并保证提供一个访问它的全局访问点?适用情况???一个对象的行为取决于它的状态,并且它必须在运行时改变它的状态?一个操作包含庞大的SwitchCase语句?优点???它将和特定状态相关的行为局部化了,这样就可以通过定义新的子类来增加新的状态和转换。做法1:因为在书中并没有提及如何删除m_pInstance指针,所以就提供exitInstance()方法手动删除class CSingleton?{public: virtual ~CSingleton(); static CSingleton* instance(void) { if(NULL == m_pInstance) return m_pInstance = new CSingleton; return m_pInstance; } void exitInstance(void) { delete m_pInstance;}private CSingleton();?static T* m_pInstance;}CSingleton* CSingleton::m_pInstance = NULL;?做法2:在类中增加一个嵌套类,让这个嵌套类负责删除m_pInstance(类似于auto_ptr的原理)class CSingleton{public: virtual ~CSingleton(); static CSingleton* Instance() {?if(NULL == m_pInstance) m_pInstance = new CSingleton; return m_pI
您可能关注的文档
最近下载
- 高一英语下册Unit1单元同步测试题(含答案).pdf VIP
- 崂山绿茶销售现状分析.docx VIP
- 社区超市经营方案.ppt VIP
- 初中物理50个实验题专练(详解版).pdf VIP
- 广日MAX调试手册.doc VIP
- 河北省衡水市枣强县2024-2025学年七年级数学第一学期期末检测试题含解析.doc VIP
- 2026年高考化学常考必背知识点考点提纲汇编.pdf VIP
- 2025年美容师(高级)证考试及美容师(高级)试题解析.docx VIP
- 2024 年云南省高等职业教育单独考试招生文化素质考试中职英语试卷.docx VIP
- 2024年美容师(高级)证考试及美容师(高级)试题解析.docx VIP
原创力文档

文档评论(0)