【设计模式】单例模式-Singleton
【设计模式】单例模式-Singleton
Ensure a class has only one instance, and provide a global point to access of it.
确保一个类只有一个实例,并提供一个全局点来访问它。
一个类有且仅有一个实例,并且自行实例化向整个系统提供。
单例模式是一种常用的软件设计模式。它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。
如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
单例模式满足三个条件:
1.某个类只能有一个实例。
2.类必须自行创建这个类的实例
3.类必须自行向整个系统提供这个实例。
实现方式通过使用private构造函数来确保类不能通过new关键字定义对象,然后自行实现对象返回方法。
我们以总统为例,一个国家只能有一个正总统,代码如下:
// 单例-总统 package com.ycx.pattern.singleton; public class President { // 直接产生对象可以很好的解决并发访问问题 private static final President president = new President(); // 私有构造函数 private President() {}; public static President getInstance() { return president; } public void sayHi() { System.out.println("Hi 大家好!我是总统."); } } // 客户端 package com.ycx.pattern.singleton; public class Client { public static void main(String[] args) { President president1 = President.getInstance(); president1.sayHi(); President president2 = President.getInstance(); president2.sayHi(); System.out.println("判断两个对象是否相同:" + (president1 == president2) ); } }
运行结果:
Hi 大家好!我是总统.
Hi 大家好!我是总统.
判断两个对象是否相同:true
JDK中使用单例模式的例子
public class Runtime { private static Runtime currentRuntime = new Runtime(); public static Runtime getRuntime() { return currentRuntime; } /** Don't let anyone else instantiate this class */ private Runtime() {} }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南