专栏名称: 爬蜥
目录
相关文章推荐
51好读  ›  专栏  ›  爬蜥

“单例”模式与它在源码中的运用

爬蜥  · 掘金  ·  · 2019-05-04 08:46

正文

阅读 25

“单例”模式与它在源码中的运用

单例是指一个类仅有一个实例,通过提供的方法来作为全局的访问点

实现例子如下

public enum SingleTonEnum{
    INSTANCE;
    public static final SingleTonEnum getInstance(){
        return INSTANCE;
    }
}
复制代码

单例的优势

  • 对访问对象的严格控制
  • 不存在频繁创建对象与对象GC带来的消耗

单例多种实现方式对比

单例实现的最困难方式在于,如何才能保证“全局”有且仅有一个实现,这里的“全局”则是针对不同的使用场景来做各自的应用即可。比如现在的应用都会部署到多台机器上,每台机器上都会有各自的jvm,那是否有必要保证所有的机器上都是同一个单例呢?或者可以仅仅把全局限定在单个jvm呢?

一般来讲,限定在jvm即可

当前一般的实现方式包括 使用 枚举 双重检查 静态内部类 与饿汉式等等

饿汉式与静态内部类相比,区别在于创建实例的时机,静态内部类需要用到的时候才加载,饿汉式则相当于类加载的时候就创建, 饿汉实现的例子比如jdk自带的 Runtime 类 ,就是典型的应用







请到「今天看啥」查看全文