- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设计模式总结—Singleton模式
注:
文档内容基本上来自于网上,并加上自己的理解而成。有的觉得网友总结得非常好,就完全照搬下来,供学习之用。然而,有的摘抄并没有加上原链接和出处,请谅解。
??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;? // 单例指针
};
?实质:
单例对象的 HYPERLINK /wiki/%E7%B1%BB \o 类 类必须保证只有一个实例存在
单例模式应用:
??????????每台计算机可以有若干个打印机,但只能有一个Printer Spooler,避免两个打印作业同时输出到打印机。
??????????一个具有自动编号主键的表可以有多个用户同时使用,但数据库中只能有一个地方分配下一个主键编号。否则会出现主键重复。
Singleton模式的结构:
????????????注:Singleton模式包含的角色只有一个,就是Singleton。Singleton拥有一个私有构造函数??确保用户无法通过new直接实例它。除此之外,该模式中包含一个静态私有成员变量instance与静态公有方法Instance()。Instance方法负责检验并实例化自己,然后存储在静态成员变量中,以确保只有一个实例被创建。
—————————————————————————————————————————————————————————————————
??????????( HYPERLINK /benny5609/article/details/2438922 /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;
您可能关注的文档
- 论文参考文献写作规范教学设计方案.doc
- 论文参考文献和其著录标准-范围和示例.doc
- 论文参考文献格式(GB7714—2005).doc
- 论文参考样本(某同学论文).doc
- 论文写作指导-论文规范研究和实证研究.doc
- 论文写作指导-论文规范研究和实证研究.doc
- 论文写手-硕士论文如何过机检-帮你成功毕业.doc
- 论文及实习报告的格式要求.doc
- 论文字数要求4000_5000字.doc
- 论文实战品牌的传播及沉淀.doc
- 2025年天津医学高等专科学校单招(语文)测试题库精编.docx
- 2025年塔城职业技术学院单招语文测试题库精选.docx
- 2025年天津城市职业学院单招语文测试题库标准卷.docx
- 2025年宁夏银川市单招(语文)测试模拟题库参考答案.docx
- 2025年天津渤海职业技术学院单招职业适应性考试题库附答案.docx
- 2025年天府新区信息职业学院单招语文测试题库必考题.docx
- 2025年宁波大学科学技术学院单招语文测试题库有答案.docx
- 2025年大同煤炭职业技术学院单招(语文)测试模拟题库1套.docx
- 2025年大连装备制造职业技术学院单招(语文)测试题库及参考答案.docx
- 2025年天门职业学院单招语文测试模拟题库及参考答案1套.docx
文档评论(0)