1. 设计模式
- 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。
- 使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。
- 设计模式就像经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们自己在思考和摸索。
2 单例设计模式
- 采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法
2.1 懒汉式
- 将构造器私有化(即无法在本类之外通过new创建对象)
- 提供私有化静态本类对象变量,并创建对象
- 提供公共的方法获取对象引用
public class SingleTon01 {
private static SingleTon01 s = new SingleTon01();
private SingleTon01() {
}
public static SingleTon01 getInstance() {
return s;
}
}
2.2 饿汉式
- 将构造器私有化(即无法在本类之外通过new创建对象)
- 提供私有化静态本类对象变量,不创建对象
- 提供公共的方法,在方法中判断对象时候存在,不存在时创建对象,对外提供对象引用
public class SingleTon02 {
private static SingleTon02 s;
private SingleTon02() {
}
public static SingleTon02 getInstance() {
if (s == null) {
s = new SingleTon02();
}
return s;
}
}
2.3 区别
- 创建的时机不同,饿汉式是在类加载时就创建对象实例,懒汉式是在使用时创建对象实例
- 饿汉式不存在线程安全问题,懒汉式存在线程安全问题
- 饿汉式存在浪费资源的可能。
- java.lang.Runtime使用了单例设计模式
public class Runtime {
private static Runtime currentRuntime = new Runtime();
public static Runtime getRuntime() {
return currentRuntime;
}
private Runtime() {}
...
}
Original: https://www.cnblogs.com/zhanghuaze/p/16562572.html
Author: 淡忘的江南
Title: 20220808-单例设计模式
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/615483/
转载文章受原作者版权保护。转载请注明原作者出处!