Gorilla带您学java之单例设计模式

单例设计模式

单例设计模式呢就是在程序运行当中,无论怎么创建该对象,该对象有且只有一个存在。
单例设计模式分为两种
1.饿汉式单例
2.懒汉式单例
首先我们来看看饿汉式单例

饿汉式单例

(在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快)

// 饿汉式单例
class EagerSingleton{
    // 1.构造方法私有化
    private EagerSingleton(){

    }
    // 2.自己创建对象
    private static EagerSingleton eagerSingleton = new EagerSingleton();

    // 3.开放一个方法让外界能拿到对象 因为外界不能创建对象,所以要用静态方法
    public static EagerSingleton getInstance() {
        return eagerSingleton;
    }
}

懒汉式单例

(类加载时不初始化)

// 不完整的懒汉式单例(出现线程问题)
class LazySingleton{
    // 1.构造方法私有化
    private LazySingleton(){

    }
    // 2.声明一个本类对象的引用
    private static LazySingleton lazySingleton = null;
    // 3.开放访问的方法
    public static LazySingleton getInstance() {
        // 判断
        if (lazySingleton == null) {
            // 创建对象
            lazySingleton = new LazySingleton();
        }
        return lazySingleton;
    }
}

线程问题呢 目前还没有进一步学习,可以先参考 [ 懒汉式单例线程问题 ]

进过上面的代码相比大家也能看出懒汉式和饿汉式的区别了吧。
那就是创建单例对象的时机不同。
饿汉式单例 不管你使不使用开放的方法,都会将这个单例对象创建出来。
懒汉式单例(需要加双锁) 只有你第一次调用开放的方法,单例对象才会创建出来(延迟创建)。

看完记得点个赞哦OUO

猜你喜欢

转载自blog.csdn.net/qq_37113621/article/details/82226743