Effective java 03-强制使用私有构造函数或者枚举来实现单例

限制构造方法为私有方法是为了确保调用者不能通过构造方法来创建对象,也就是确保该类的对象是单例的。
例子:
...
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton() {.....}
public Singletone getInstance() {return instance;}
}
...
此种方式的安全性比较差,也就是可以通过setAccessible()方法来将构造函数设置成可见,然后通过反射来创建对象。

通过枚举类型来实现单例
例子:
...
public enum Singleton {
INSTANCE;
......
}
...
此种方式安全性比较高,实现也相对比较简单,但是如果类需要继承Enum以外的父类时就无法使用该方式(尽管可以声明一个Enum来实现接口)。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容