单例设计模式

一.单例设计模式

1. 作用: 在应用程序有保证最多只能有一个实例.
2. 好处:
  1)提升运行效率.
  2)实现数据共享. 案例:application 对象

(一)懒汉式

1.对象只有被调用时才去创建.
2.由于添加了锁,所以导致效率低.
3.示例代码

复制代码
public class SingleTon {
    //由于对象需要被静态方法调用,把方法设置为static
    //由于对象是static,必须要设置访问权限修饰符为private ,如果是public可以直接调用对象,不执行访问入口
    private static SingleTon singleton;
    /**
     * 构造方法:
     * 方法名和类名相同.
     * 无返回值.
     * 
     * 构造方法私有化:其他类不能实例化这个类对象
     * 
     * 对外提供访问入口
     */
    private SingleTon(){}
    
    /**
     * 实例方法,实例方法必须通过对象调用
     * 
     * 设置方法为静态方法
     * 
     */
    public static SingleTon getInstance(){
        //添加逻辑如果实例化过,直接返回
        if(singleton==null){
            /*
             * 多线程访问下,可能出现if同时成立的情况,添加锁
             */
            synchronized (SingleTon.class) {
                //双重验证
                if(singleton==null){
                    singleton = new SingleTon();
                }
            }            
        }
        return singleton;
    }
}
复制代码

(二)饿汉式

1.解决了懒汉式中多线程访问可能出现同一个对象和效率低问题
2.示例代码

public class SingleTon {
    //在类加载时进行实例化. 
    private static SingleTon singleton=new SingleTon(); 
    private SingleTon(){} 
    public static SingleTon getInstance(){
        return singleton; 
    }
}

 

posted @   溯鸣  阅读(132)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示