设计模式-单例模式

设计模式-单例模式

单例模式(Singleton Pattern)是一种创建型设计模式,其目的是确保一个类在整个应用程序中只有一个实例,并且提供一个全局访问点来获取这个实例。单例模式常用于那些需要频繁实例化却又希望在整个应用中只存在一个实例的情况,例如线程池、缓存、配置设置、日志对象等。

单例模式的特点和实现要点:

  1. 唯一性:通过限制类的实例化过程,确保在整个应用程序生命周期内,无论何时何地请求该类的实例,都将返回同一个对象。
  2. 封装性:将实例化过程封装在类的内部,对外暴露一个公共的静态方法(通常命名为getInstance()),通过这个方法获取单例对象。
  3. 线程安全性:在多线程环境下,单例模式的实现需要考虑线程安全问题,确保在并发环境中依然只有一个实例被创建

单例模式的两种典型实现方式:

  • 懒汉式(Lazy Initialization):实例在第一次被请求时才会被创建,优点是节省资源,但如果未正确处理线程安全,可能会导致多个实例被创建。
  • 饿汉式(Eager Initialization):类加载时立即创建实例,线程安全,但若实例创建过程较耗时或占用大量资源,则可能导致资源浪费。

懒汉模式

java 复制代码
/**
 * 单例模式-懒汉
 * 在调用创建方法的时候 才会创建对象; 注意线程安全问题
 */
public class Singleton {
   private volatile static Singleton singleton;

   private Singleton(){
   }

   public static Singleton getInstance(){
       if (singleton == null){
           // 双重校验机制 防止第一次多线程的情况下满足条件一 导致创建两个不同对象
           synchronized (Singleton.class){
               if (singleton == null){
                   singleton = new Singleton();
               }
           }
       }
       return singleton;
   }

}

饿汉模式

java 复制代码
/**
 * 单例模式-饿汉
 * 在调用方法之前就被创建出来
 */
public class SingletonE {
    private static SingletonE singletonE;

    private SingletonE(){}

    public SingletonE getSingletonE(){
        return singletonE;
    }
}

总的来说,单例模式通过对类实例化过程的控制,实现了对象实例的全局唯一性,降低了系统资源消耗,并提高了系统各部分之间的协作效率。但它也可能带来全局状态难以测试、不易于拓展等问题,因此在实际应用中应谨慎权衡使用。

相关推荐
workflower21 小时前
例二:某汽车制造企业深度融合AI智能体,构建园区网络的智能运维体系
人工智能·机器学习·设计模式·机器人·云计算·汽车·制造
ly76891 天前
Java 设计模式详解:从原则到 23 种经典模式
java·开发语言·设计模式
AI人工智能+电脑小能手1 天前
大白话说Java设计模式-14-适配器模式(业务实战篇)
java·设计模式·适配器模式·系统兼容·多渠道对接
略略略咯咯1 天前
(总结)设计模式
设计模式
Cosolar2 天前
DeepSeek Harness 理解 Harness 的设计哲学 - 可组合的插件运行时
人工智能·设计模式·架构
2301_777998342 天前
C++ 单例模式详解:饿汉、懒汉,以及“对象”和“对象指针”到底有什么区别
开发语言·c++·单例模式
Nebula_g2 天前
JavaSE基础语法:特殊类(特殊情景下的设计模式)
java·开发语言·设计模式
George_Ye3 天前
同一本书,一人一份:我如何设计 AI 个性化扫书报告
设计模式
莫得感情 o3 天前
设计模式 22 · 三个冷门模式:中介者、访问者、解释器
java·设计模式
AI人工智能+电脑小能手4 天前
大白话说Java设计模式-08-建造者模式(业务实战篇)
java·设计模式·建造者模式·架构设计·对象构建