其他分享
首页 > 其他分享> > 设计模式之单例模式

设计模式之单例模式

作者:互联网

目录

定义

优点

缺点

应用场景

结构图

实现

懒汉式

饿汉式 


定义

        指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。

优点

缺点

应用场景

结构图

实现

懒汉式

特点:类加载时没有生成单例,只有当第一次调用 getlnstance 方法时才去创建这个单例。

public class LazySingleton {
    private static LazySingleton instance = null;    //保证 instance 在所有线程中同步
    private LazySingleton() {
    }    //private 避免类在外部被实例化
    public static synchronized LazySingleton getInstance() {
        //getInstance 方法前加同步
        if (instance == null) {
            instance = new LazySingleton();
        }
        return instance;
    }
}

// 改进版
public class LazySingleton {
    private static LazySingleton instance = null;    //保证 instance 在所有线程中同步
    private LazySingleton() {
    }
    public static LazySingleton getInstance() {
        //getInstance 方法前不加同步,采用双重检查的方式,提升效率
        if (instance == null) {
            synchronized (LazySingleton.class) {
                if (instance == null) {
                    instance = new LazySingleton();
                }
            }
        }
        return instance;
    }
}

饿汉式 

 特点:特点是类一旦加载就创建一个单例,保证在调用 getInstance 方法之前单例已经存在了。

public class HungrySingleton {
    private static final HungrySingleton instance = new HungrySingleton();

    private HungrySingleton() {
    }

    public static HungrySingleton getInstance() {
        return instance;
    }
}

 

标签:getInstance,LazySingleton,private,instance,实例,模式,单例,设计模式
来源: https://blog.csdn.net/danxiaodeshitou/article/details/118879632