美文网首页
Java 设计模式之单例模式(内部类实现单例)

Java 设计模式之单例模式(内部类实现单例)

作者: BeijingIamback | 来源:发表于2019-05-07 22:28 被阅读0次

何时使用单例模式
当需要控制一个类的实例只有一个, 而且客户只能从一个全局访问点去访问她。

经典的单例模式有两种,懒汉式饿汉式,各自都有各自的缺点,使用内部类能更好的完成,延迟加载和线程安全。


public class Singleton {
    /***
     * 类的内部类,也就是静态成员的内部类,该内部类的实例与外部类的实例没有绑定关系
     * 只有被调用的时候才会装载,从而实现了延时加载
     *
     */
    public static class SingletonHolder {
        /**
         * 静态初始化器,JVM保证线程安全
         */
        private static Singleton instance = new Singleton();
    }
    /**
     * 私有化构造方法
     */
    private Singleton(){
        
    }
    
    public static Singleton getInstance(){
        return SingletonHolder.instance;
    }
}

当getInstance方法第一次被调用的时候,她第一次读取SingletonHolder.instance,导致SingletonHolder类被初始化,而这个类在装载并初始化的时候会初始化他的静态域,从而创建singleton实例,由于是静态的域,所以只会在虚拟机装载类的时候加载一次,并由虚拟机保证她的线程安全
这个模式的优势在于,getInstance并没有被同步,并且只执行一个域的访问,因此延迟初始化并没有增加访问成本。

还可以尝试使用单元素的枚举,来实现singleton,只要编写一个单元素的枚举类型即可。

摘抄来自:研磨设计模式

相关文章

  • java设计模式之单例模式

    单例模式属于java设计模式的一种,最常见实现方式有以下几种 懒汉、饿汉、双重检查单例、静态内部类单例。 单例模式...

  • 单例模式只有饿汉式和懒汉式吗?这几种单例模式你见过吗

    设计模式之单例模式-单例模式的几种实现方式及小案例 本文出处:凯哥Java(wx:kaigejava) 单例模式有...

  • Java中单例模式你用的哪一种?

    一起讨论java中的单例模式。单例模式是java设计模式中算是最简单的设计模式了。 * java实现单例模式的写法...

  • 单例模式

    JAVA设计模式之单例模式 十种常用的设计模式 概念: java中单例模式是一种常见的设计模式,单例模式的写法...

  • 单例模式(Java内部类加载顺序)

    你真的会写单例模式吗——Java实现Android设计模式源码解析之单例模式深度分析 Java 的枚举类型:枚举的...

  • 单例模式

    饿汉模式: 懒汉模式: Double CheckLock(DCL)实现单例 静态内部类实现单例 枚举单例 使用容器...

  • JAVA设计模式之单例模式

    JAVA设计模式之单例模式

  • 2022-01-02

    1、设计模式 1.1、单例模式 最近比较好的写法有静态内部类实现和枚举单例。

  • 【设计模式】单例模式

    单例模式 常用单例模式: 懒汉单例模式: 静态内部类单例模式: Android Application 中使用单例模式:

  • kotlin实现单例模式

    1.懒汉式实现单例模式 2.线程安全懒汉式实现单例模式 3.双重校验懒汉式实现单例模式 4.静态内部类方式实现单例模式

网友评论

      本文标题:Java 设计模式之单例模式(内部类实现单例)

      本文链接:https://www.haomeiwen.com/subject/bjmtnqtx.html