像这样的类 LocalDate
是不可变的,它有一个私有的构造函数,每次我们想要一个它的对象时,我们都要调用它的静态方法,如 LocalDate.now()
或 LocalDate.of(year, month, day)
. 这些方法使用 new
关键字,并调用该私有构造函数,所以每次都会创建一个 "新引用"。它不是一个单子类,因为我们可以同时拥有多个对象。
但是 System
类?看起来像 LocalDate
,它有一个私有的构造函数,但它没有一个静态方法来调用。这个类,也不是抽象的,所以为什么java程序员写的是 System
类,好像没有人可以做它的对象?这背后的设计模式是什么?哪些类的行为是这样的?
它有一个从未被调用的私有构造函数,所以永远不会有任何实例(单人需要一个实例)。
/** Don't let anyone instantiate this class */
private System() {
}
它不是抽象的
public final class System {
System
的使用更像是一个命名空间,它只是一堆静态方法和常量的容器。它只是一堆静态方法和常量的容器。
Java不允许你把方法放在一个类之外,所以有时结果是一个完全没有实例的 "类",就像这样。