|
|
1
10
虽然枚举通常不是给定的可变状态,但这一事实是基于如何使用枚举的假设。虽然这些假设通常是成立的,但它们并不总是成立的,在这种情况下,它们不成立于一个单例。 虽然枚举不是最常见的用法,但是拥有一个具有可变状态的枚举是完全合法的,尽管您可能希望在代码中指出这一事实,这样任何其他可能查看它的程序员都不会感到困惑。 至于这种设计模式的流行程度,我经常看到它,但并不是说它已经变得“普通”。 |
|
|
2
8
(此答案假定“强制”单件是
真的?
您想要什么,而不是由DI框架(如Guice)管理的事实上的单例
把你的问题分解成两个:它真的被广泛采用了吗?不,不是应该的那么广泛。这是个好主意吗?对! JavaEnUM是一个类,它只能具有固定的N个实例集合,这些实例在源代码中被硬编码。 singleton是一个类,它只能有一组固定的n个实例,这些实例在源代码中是硬编码的。n=1。 就这么简单! |
|
|
3
3
枚举可以具有可变状态。通常这不是一个好主意,因为枚举的本质是拥有X大于1的Y类型的X版本,因此在状态(而不是使用字段/属性)之间进行切换就有点像噩梦,因为每个方法都需要考虑所有X枚举常量的所有可能状态。 但是,如果您要定义一个枚举,无论如何只使用一个常量;您可以简单地将该单个常量视为一个普通的对象,并对其进行所有假设。IOW:拥有x版本的状态的问题消失了,因为x现在是1。 |
|
4
1
不
|
|
|
5
-4
这不是个好主意。
它强制类从具体类继承
类型
一般来说,您没有自由选择实例的实例化方式。 从语法上讲,这真的是太多的输入了吗?
|