Character 2 Creating and Destroying objects
使用私有构造方法或者枚举类型执行单例singleton属性
问题场景
单例就是一个仅实例化一次的类(item95)。单例通常代表无状态对象,比如函数(item24)或者一个本质上唯一的系统组件。让一个类成为单例会使测试它的客户变的困难,因为除非实现一个作为它类型的接口,否则不可能用一个模拟实现替代单例。
方法一:公共属性 public field
这有两种比较常见的方式实现单例。两者都基于保持构造方法私有和到处公共静态成员从而提供对唯一实例的访问。在第一种方法中,用final修饰成员:
//singleton with public final field
public class Elvis {
public static final Elvis INSTANCE = new Elvis();
private Elvis() {
..