设计模式总结—Singleton模式.docxVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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;

文档评论(0)

ktj823 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档