21
2020
10

什么是单例模式?

答:单例模式是一种常用的软件设计模式,在应用这个模式时,单例对象的类必须保证只有一个实例存在,整个系统只能使用一个对象实例。


优点:不会频繁地创建和销毁对象,浪费系统资源。


使用场景:IO 、数据库连接、Redis 连接等。


单例模式代码实现:


class Singleton {

    private static Singleton instance = new Singleton();

    public static Singleton getInstance() {

        return instance;

    }

}


单例模式调用代码:


public class Lesson7\_3 {

    public static void main(String[] args) {

        Singleton singleton1 = Singleton.getInstance();

        Singleton singleton2 = Singleton.getInstance();

        System.out.println(singleton1 == singleton2); 

    }

}


程序的输出结果:true


可以看出以上单例模式是在类加载的时候就创建了,这样会影响程序的启动速度,那如何实现单例模式的延迟加载?在使用时再创建?


单例延迟加载代码:


// 单例模式-延迟加载版

class SingletonLazy {

    private static SingletonLazy instance;

    public static SingletonLazy getInstance() {

        if (instance == null) {

            instance = new SingletonLazy();

        }

        return instance;

    }

}


以上为非线程安全的,单例模式如何支持多线程?


使用 synchronized 来保证,单例模式的线程安全代码:


class SingletonLazy {

    private static SingletonLazy instance;

    public static synchronized SingletonLazy getInstance() {

        if (instance == null) {

            instance = new SingletonLazy();

        }

        return instance;

    }

}



« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。