构造方法私有化的操作 单例与多例设计模式 单例设计模式 (Singleton)
当类中的构造方法私有化的时候, 该类不能通过 new 关键字进行实例化. 那么该如何解决呢???
分析:
第一步: 构造方法使用了 private 声明, 那么就表示这个构造方法只能被这个类的内部所使用. 既然如此, 那么就可以在这个类的内部实例化对象.
第二步: 现在的 instance 在 Singleton 里面只是一个普通类的属性, 而所有的普通类属性必须在类产生实例化对象之后才可以使用. 是否存在有一种属性, 可以让这个类不受 Singleton 类实例化对象的控制呢?? 如果使用了 static 声明 instance 属性, 那么就可以表示在一个类没有产生实例化对象的时候直接使用该属性.
第三步: 在定义一个类的时候, 首先想到的就是对类中的属性进行封装. 属性一旦进行封装便只能够使用 getter() 方法访问该属性. 所以现在就需要提供一个 getter() 方法, 可以以同样不受到 Singleton 实例化的控制, 所以此时应该继续使用 static 属性.
单例设计模式的意义:
如果说现在要想控制一个类中实例化对象的产生个数, 那么首先就是要锁定类中的构造方法. 因为在实例化对象的时候, 首先就是要调用类中的构造方法.
既然需要一个实例化对象, 那么就可以在类的内部使用 static 方式来定义一个公共的对象, 每一次通过 static 方法返回唯一的一个对象, 这样外部不管有多少次调用, 那么最终的一个类只能够产生唯一的一个对象.
单例设计模式的特点
构造方法私有化, 在类的内部定义 static 方法和属性, 利用 static 方法取得本类的实例化对象. 不管外部产生多少个 Singleton 类的对象, 但是本质上只有一个唯一的实例化对象.
来源: https://www.2cto.com/kf/201810/784275.html