更新时间:2022-04-29 10:13:38 来源:极悦 浏览1018次
很多小伙伴对Java单例模式的使用不是很了解,极悦小编就来为大家进行讲解。单例是一种创建设计模式,它确保只有一个同类对象存在,并为任何其他代码提供对它的单点访问。
单例与全局变量几乎具有相同的优点和缺点。尽管它们非常方便,但它们破坏了代码的模块化。
使用示例:许多开发人员认为单例模式是一种反模式。这就是为什么它在 Java 代码中的使用量正在下降的原因。
尽管如此,Java 核心库中还是有相当多的 Singleton 示例:
java.lang.Runtime#getRuntime()
java.awt.Desktop#getDesktop()
java.lang.System#getSecurityManager()
识别: 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单例模式的使用已经有所了解,希望对大家的学习能够有所帮助哦。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习