设计模式学习基础篇-单例模式

单例模式是一种创建型设计模式,它保证一个类只能实例化一个对象,并提供一个全局访问点来获得该实例。

在单例模式中,类只有一个私有的构造函数,它控制着对象的创建过程。类的静态方法或静态变量提供了对唯一实例的访问。

常见的单例模式实现方式有以下几种:

  1. 饿汉式单例:在类加载时就创建并初始化唯一实例。该实例在整个程序生命周期内都是唯一的。这种方式的优点是实现简单,线程安全,但可能会造成资源浪费,因为实例在一开始就被创建出来。
  2. 懒汉式单例:在第一次使用时才创建并初始化唯一实例。该实例在整个程序生命周期内都是唯一的。这种方式的优点是在实际需要时才创建实例,避免了资源浪费,但需要考虑线程安全问题,可能需要进行加锁处理。
  3. 双重检查锁单例:结合了饿汉式和懒汉式的优点,既实现了延迟加载,又保证了线程安全。在第一次使用时才进行实例的创建和初始化,以后的访问直接返回已创建的实例。
  4. 静态内部类单例:通过定义一个私有静态内部类,在内部类中创建唯一实例。这种方式实现了延迟加载,保证了线程安全,且在存在多个类加载器的情况下,仍然保证了唯一实例的存在。
  5. 枚举单例:通过枚举类型实现的单例模式,枚举类型在Java中是线程安全的,且只会被实例化一次。

单例模式在需要确保只有一个实例存在的情况下非常有用,例如数据库连接池、线程池、配置信息等。但过度使用单例模式可能会导致代码耦合度高、测试困难等问题,需要根据具体情况谨慎使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值