龙空技术网

设计模式-单例模式详解

编程少年 155

前言:

如今咱们对“创建对象一定会调用构造方法吗为什么”大体比较讲究,我们都需要剖析一些“创建对象一定会调用构造方法吗为什么”的相关资讯。那么小编也在网摘上收集了一些关于“创建对象一定会调用构造方法吗为什么””的相关资讯,希望大家能喜欢,兄弟们快快来了解一下吧!

基本介绍

单例模式是一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。

所有单例的实现都包含以下两个相同的步骤:

将默认构造函数设为私有, 防止其他对象使用单例类的 new运算符。新建一个静态构建方法作为构造函数。 该函数会 “偷偷” 调用私有构造函数来创建对象, 并将其保存在一个静态成员变量中。 此后所有对于该函数的调用都将返回这一缓存对象。

如果你的代码能够访问单例类, 那它就能调用单例类的静态方法。 无论何时调用该方法, 它总是会返回相同的对象。

类结构图

类图说明:

单例(Singleton) 类声明了一个名为 getInstance 获取实例的静态方法来返回其所属类的的一个相同实例。单例的构造函数必须对客户端(Client) 代码隐藏。调用获取实例方法必须是获取单例对象的唯一方式。

实现方式在类中添加一个私有静态成员变量用于保存单例实例。声明一个公有静态构建方法用于获取单例实例。在静态方法中实现"延迟初始化"。 该方法会在首次被调用时创建一个新对象, 并将其存储在静态成员变量中。 此后该方法每次被调用时都返回该实例。将类的构造函数设为私有。 类的静态方法仍能调用构造函数, 但是其他对象不能调用。检查客户端代码, 将对单例的构造函数的调用替换为对其静态构建方法的调用。适用场景如果程序中的某个类对于所有客户端只有一个可用的实例可以使用单例模式单例模式禁止通过除特殊构建方法以外的任何方式来创建自身类的对象。 该方法可以创建一个新对象, 但如果该对象已经被创建, 则返回已有的对象。如果你需要更加严格地控制全局变量可以使用单例模式单例模式与全局变量不同, 它保证类只存在一个实例。 除了单例类自己以外, 无法通过任何方式替换缓存的实例。请注意, 你可以随时调整限制并设定生成单例实例的数量, 只需修改 获取实例方法, 即 getInstance中的代码即可实现。示例代码双重检查锁实现方式静态内部类实现方式

标签: #创建对象一定会调用构造方法吗为什么