使用枚举实现绝对单例

来源:互联网 发布:2k17科比捏脸数据 编辑:程序博客网 时间:2024/04/28 12:23

单例模式是开发中用的最多的设计模式之一,在诸如数据库连接池、配置文件读取等业务场景广泛使用。单例的Java实现大家都知道有两种方式,最初的英文文档翻译者为其起了很有趣的名字:“懒汉式”和“饿汉式”,当然还包括这两种方式的其他变种,比如增加了相关线程安全的同步锁,但即使这样也不能实现绝对意义上的Singleton ,因为Java本身的反射机制可以绕过构造方法生成对象,即使你把构造方法变成了Private。

Java1.5之后,随着枚举类型的加入,单例多了一个实现方法,(包含单个元素的枚举类型):

  public enum Elvis {        INSTANCE;        public void leaveTheBuilding() {        }    }


优势:

  • 无偿提供序列化;
  • 绝对防止多次实例化;
  • 防反射,这样就没办法反射生成对象了;
  • 简洁明了;
单元素的枚举类型本应该成为单例模式的最佳实现方式,只可惜这种方式在现实开发中很少被使用。

       

0 0
原创粉丝点击