20220808-单例设计模式

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() {}
...
}
posted @   淡忘的江南  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示