单例模式
关键步骤:
- 私有静态单例对象
- 私有空参构造器
- 静态公有方法 getInstance()只为外部提供一个对象
| public class Singleton { |
| |
| private static Singleton singleton; |
| |
| private Singleton() {} |
| |
| public static Singleton getSingleton(){ |
| if (singleton==null){ |
| singleton = new Singleton(); |
| } |
| return singleton; |
| } |
| } |
| public class Singleton { |
| |
| private static Singleton singleton; |
| |
| private Singleton() {} |
| |
| public static synchronized Singleton getInstance(){ |
| if (singleton==null){ |
| singleton = new Singleton(); |
| } |
| return singleton; |
| } |
| } |
| public class Singleton { |
| |
| private static Singleton singleton; |
| |
| private Singleton() {} |
| |
| public static synchronized Singleton getInstance(){ |
| if (singleton==null){ |
| synchronized (Singleton.class){ |
| if (singleton==null){ |
| singleton = new Singleton(); |
| } |
| } |
| } |
| return singleton; |
| } |
| } |
| public class Singleton { |
| |
| |
| private Singleton() {} |
| |
| private static class SingletonInner{ |
| private static final Singleton INSTANCE = new Singleton(); |
| } |
| public static Singleton getInstance(){ |
| return SingletonInner.INSTANCE; |
| } |
| } |
借助JDK1.5中添加的枚举来实现单例模式。不仅能避免多线程同步问题,而且还能防止反序列化重新创建新的对象。
| public enum Singleton{ |
| INSTANCE; |
| public void whateverMethod(){ |
| |
| } |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)