singleton(单件)-对象创建型模式

Posted 郑兴鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了singleton(单件)-对象创建型模式相关的知识,希望对你有一定的参考价值。

1.意图

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

2.动机

对一些类来说,只有一个实例是很重要的。让类自身负责保存它唯一的实例,这个类可以保证没有其他实例可以被创建(通过截取创建新对象的请求),并且它可以提供一个访问该实例的方法。

3.适用性

  • 当类只能有一个实例而且客户可以从一个周所周知的访问点访问它时。
  • 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。

4.结构

    

5.代码实例

 静态成员实例的懒汉模式

注意此实例的构造函数为私有的以防止使用时实例化此类。此实例加了临界区(也可加锁)以保证单例的线程安全,频繁加锁可能会有性能问题(处理大量数据时)。

 内部静态变量型饿汉模式

此内部静态变量只会初始化一次,因此每次获取实例时,获取的为同一个实例。

 饿汉模式

静态成员初始化在进入main函数之前已经完成,此种实现没有争夺锁的性能问题。

 Test.cpp

6.测试结果

    

7.效果

  • 对唯一实例的受控访问
  • 缩小名空间
  • 允许对操作和表示的精化
  • 允许可变数目的实例
  • 比类操作更灵活

以上是关于singleton(单件)-对象创建型模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式 单件-Singleton

设计模式学习

设计模式之- 单例模式(Singleton Pattern)

关于人工智能编程中的singleton

JAVA私房菜专栏之设计模式

设计模式--单例模式(Singleton)