为什么不可变单身没有全局状态?

时间:2017-10-04 03:49:06

标签: java design-patterns singleton immutability

MiškoHevery写的一篇名为Root Cause of Singletons的文章:

  

现在,有一种Singleton可以。这是一个单例,其中所有可到达的对象都是不可变的。如果所有对象都是不可变的,那么Singleton没有全局状态,因为一切都是常量。

单例始终具有全局状态,因为单例的所有设计模式都会公开对单个实例的全局引用。

但为什么不可变的单身人士没有全球状态?

2 个答案:

答案 0 :(得分:0)

coqc

答案 1 :(得分:0)

将这种Singleton想象成作者只是一个静态的常量对象。

单身模式不一定能保证不变性。因此,假设您有一个Singleton,代码中的许多其他模块/组件/对象使用它的状态更改。这可能会导致意外行为。对象A使单例处于状态A,但没有什么能保证单身人士的状态在一段时间后不会成为B.

我认为这是作者试图在此概述的内容。这种单例示例是配置对象或静态地图。