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() {} |
| ... |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)