单例模式

  • 单例模式:保证一个类只有一个实例,并且提供一个访问该类的全局访问点

  • 举例那些地方用到了单例模式:

windows的回收站、任务管理器;多线程的线程池:方便对线程池内的线程进行控制

  • 优点:

    1. 在单例模式中,活动的单例只有一个实例,对单例类的所有实例化得到的都是相同的一个实例,确保了其他对象访问的都是一个实例;

    2. 提供了对唯一实例的受控访问;

    3. 在系统内存中只有一个实例,节约了系统资源,当频繁的创建和销毁对象时,单例模式提高了系统的效率

    4. 避免了对共享资源的多重占用;

  • 缺点:

    1. 不适用多变的对象
    2. 单例类职责过重,一定程度违反单一职责原则
  • 代码实例

    1. 饿汉单例:类初始化时就加载该对象,调用效率高,线程天生安全。
    /* 饿汉单例 */
    class Single{
        //1.私有化类的构造
        private Single(){
    
        }
        //2.声明当前类对象,没初始化
        //4.此对象也必须为静态static的
        private static Single instance = null;
        static {
            instance  = new Single();
        }
        //3.声明public、static的返回当前对象的方法
        public static Single getInstance(){
            return instance;
        }
    }
    
    1. 懒汉单例:类初始化时不会初始化该对象,使用的时候才会创建该对象,具备懒加载功能
    /* 懒汉单例 */
    class LazySingle{
        private LazySingle(){
    
        }
        private static LazySingle instance = null;
        public static LazySingle getInstance(){
            if(instance==null){
                synchronized(LazySingle.class){//同步锁
                    if(instance==null){
                        instance = new LazySingle();
                    }
                }
                
            }
            return instance;
        }
    }
    
posted @   WiThYouMr  阅读(5)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示