专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java单例模式的使用

Java单例模式的使用

更新时间:2022-04-29 10:13:38 来源:星辉 浏览967次

很多小伙伴对Java单例模式的使用不是很了解,星辉小编就来为大家进行讲解。单例是一种创建设计模式,它确保只有一个同类对象存在,并为任何其他代码提供对它的单点访问。

单例与全局变量几乎具有相同的优点和缺点。尽管它们非常方便,但它们破坏了代码的模块化。

Java中模式的使用

使用示例:许多开发人员认为单例模式是一种反模式。这就是为什么它在 Java 代码中的使用量正在下降的原因。

尽管如此,Java 核心库中还是有相当多的 Singleton 示例:

java.lang.Runtime#getRuntime()

java.awt.Desktop#getDesktop()

java.lang.System#getSecurityManager()

识别: Singleton 可以通过静态创建方法识别,返回相同的缓存对象。

Naïve Singleton(单线程)

实现一个草率的 Singleton 非常容易。您只需要隐藏构造函数并实现静态创建方法即可。

Singleton.java: 单例

包 refactoring_guru.singleton.example.non_thread_safe;
公共最终类单例{
    私有静态单例实例;
    公共字符串值;
    私人单例(字符串值){
        // 下面的代码模拟了缓慢的初始化。
        尝试 {
            线程.sleep(1000);
        } 捕捉(InterruptedException ex){
            ex.printStackTrace();
        }
        this.value = 值;
    }
    公共静态单例getInstance(字符串值){
        如果(实例==空){
            实例 = 新单例(值);
        }
        返回实例;
    }
}

DemoSingleThread.java: 客户端代码

包 refactoring_guru.singleton.example.non_thread_safe;
公共类 DemoSingleThread {
    public static void main(String[] args) {
        System.out.println("If you see the same value, then singleton was reused (yay!)" + "\n" +
                "If you see different values, then 2 singletons were created (booo!!)" + "\n\n" +
                "RESULT:" + "\n");
        Singleton singleton = Singleton.getInstance("FOO");
        Singleton anotherSingleton = Singleton.getInstance("BAR");
        System.out.println(singleton.value);
        System.out.println(anotherSingleton.value);
    }
}

OutputDemoSingleThread.txt: 执行结果

如果您看到相同的值,则重复使用单例(耶!)
如果您看到不同的值,则创建了 2 个单例(嘘!!)
结果:
FOO 
FOO

通过上述介绍,相信大家对Java单例模式的使用已经有所了解,希望对大家的学习能够有所帮助哦。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>