使用Java中的静态成员和方法的Singleton v/s类

Ran*_*ari 5 java singleton design-patterns

可能重复:
静态类和单例模式之间的区别?

为什么一个人只需要一个实例?使用具有静态成员变量和静态方法的类可以实现相同的目的.

据我所知,可能有两种可能的答案 -

  1. 当你的类需要有状态而你只需要一个对象时.从设计的角度来看,具有静态方法和变量的类被认为是Utility类,不应该保持任何状态.

  2. 如果您的类需要参与多态,并且您只想要继承树中的类的一个对象.

如果某人可以提供现实生活场景中的示例或者Singleton对象需要参与多态/继承的任何Java API,那将会非常有用吗?

JB *_*zet 2

Collections.emptySet()是单例的典型示例,它不能作为静态类实现,因为显然它的目标是成为接口的实例java.util.Set。创建成本并不高,但每次需要空集时都创建一个新实例是愚蠢的,因为唯一的实例可以重复使用。