Java设计模式之单例模式
单例模式(Singleton Pattern)是一种常用的设计模式,它用于限制一个类只能创建一个实例,并提供一个全局访问点。在Java中,实现单例模式的关键点包括:
-
私有的构造函数:为了防止其他类创建该类的实例,我们需要将构造函数设为私有。
-
静态的实例变量:我们需要一个静态的变量来存储该类的唯一实例。
-
公共的静态方法:我们需要一个公共的静态方法来获取该类的唯一实例。如果实例还未创建,这个方法需要负责创建实例。
懒汉式单例模式
懒汉式是指在第一次调用获取实例的方法时才创建实例,之所以称为“懒汉式”,是因为它在创建单例实例上“懒”,只有在真正需要使用时才会创建。
public class LazySingleton { private static LazySingleton instance; private LazySingleton() {} public static synchronized LazySingleton getInstance() { if (instance == null) { instance = new LazySingleton(); } return instance; } }
在这个例子中,getInstance()
方法使用了synchronized
关键字来确保线程安全,这意味着在多线程环境中,只有一个线程能够进入这个方法,从而防止创建多个实例。
饿汉式单例模式
饿汉式是指在类加载时就创建实例,之所以称为“饿汉式”,是因为它在创建单例实例上“饿”,在类加载时就创建了单例实例,无论后续是否会使用到。
public class EagerSingleton { private static EagerSingleton instance = new EagerSingleton(); private EagerSingleton() {} public static EagerSingleton getInstance() { return instance; } }
在这个例子中,单例实例在类加载时就被创建,因此getInstance()
方法不需要使用synchronized
关键字来确保线程安全,这可以提高性能。但是,如果单例类的创建过程很耗时或耗资源,且使用的频率不高,那么饿汉式可能会导致资源的浪费。
总结
单例模式是一种非常重要的设计模式,它可以确保一个类只有一个实例,并提供一个全局访问点。在Java中,我们可以通过私有的构造函数、静态的实例变量和公共的静态方法来实现单例模式。懒汉式和饿汉式是实现单例模式的两种常见方式,它们各有优缺点,我们需要根据具体的需求来选择使用哪种方式。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)