什么是单例设计模式饿汉式 和懒汉式

单例模式确保类只有一个实例并提供全局访问,常用于系统资源池和配置信息管理。Java中的实现包括饿汉式(类加载时创建实例)和懒汉式(首次请求时创建)。懒汉式在多线程环境下需处理线程安全,可采用双重检验锁或静态内部类。此模式广泛应用在数据库连接池和日志打印器等场景。
摘要由CSDN通过智能技术生成

        单例设计模式是一种创建型设计模式,它确保一个类只有一个实例,并提供全局访问点,从而提高代码的可重用性和灵活性。该模式的实现方式有多种,但核心思想是在类的内部自行管理实例化过程,通过静态方法提供实例的全局访问点。
         单例模式的核心在于控制实例的创建和访问权限。通过将构造函数设置为私有,禁止外部调用者实例化该类,避免多个实例共存的问题。而通过静态方法提供实例的全局唯一性,其他对象可以通过该方法获取实例,从而实现全局访问。
         单例模式适用于需要全局唯一性的对象,例如系统资源池、配置信息等。单例模式可以减少系统内存开销,提高效率,同时保证全局的数据一致性。
         在 Java 中,单例模式的常见实现方式有饿汉式和懒汉式。饿汉式在类加载时直接创建实例,懒汉式则是在第一次访问时创建实例。在多线程访问时,懒汉式需要考虑线程安全问题,可以使用双重检验锁或者静态内部类实现等方式解决。
         总之,单例设计模式是一种简单而又强大的设计模式,可以确保系统全局唯一性,并提供全局访问点。理解和掌握单例模式的使用方法和实现方式对于编写高效、可重用的代码非常有帮助。
 * 饿汉式
 在该实现中,实例在类加载时被创建,并在整个应用程序中共享:
public class Singleton {
    // 私有构造函数,禁止外部实例化
    private Singleton() {}
     // 类加载时创建实例
    private static Singleton instance = new Singleton();
     // 获取实例的静态方法
    public static Singleton getInstance() {
        return instance;
    }
}
* 懒汉式
 在该实现中,实例只有在第一次请求时才被创建:
public class Singleton {
    // 私有构造函数,禁止外部实例化
    private Singleton() {}
     // 实例在第一次请求时创建
    private static Singleton instance;
     // 获取实例的静态方法
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
在多线程环境下,以上代码可能会出现线程安全问题。为了解决线程安全问题,可以在懒汉式中使用双重检验锁或者静态内部类实现等方式。
 以上是单例模式的两个经典实现示例。单例模式在实际开发中应用广泛,例如数据库连接池、日志打印器等。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值