20230426 21. 单例模式

介绍

单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。

通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。

单例模式因为Singleton类封装它的唯一实例,这样它可以严格地控制客户怎样访问它以及何时访问它。简单地说就是对唯一实例的受控访问。

单例模式

代码示例

懒汉式

public class Singleton1 {

    private static Singleton1 instance;

    // 构造方法private化
    private Singleton1() {
    }

    // 得到Singleton的实例(唯一途径)
    public static Singleton1 getInstance() {

        if (instance == null) {
            instance = new Singleton1();
        }

        return instance;
    }
}

饿汉式

public class Singleton2 {

    private static Singleton2 instance = new Singleton2();

    // 构造方法private化
    private Singleton2() {
    }

    // 得到Singleton的实例(唯一途径)
    public static Singleton2 getInstance() {
        return instance;
    }
}

多线程

public class Singleton3 {

    private volatile static Singleton3 instance;

    // 构造方法private化
    private Singleton3() {
    }

    // 得到Singleton的实例(唯一途径)
    public static Singleton3 getInstance() {

        if (instance == null) {
            synchronized (Singleton3.class) {
                if (instance == null) {
                    instance = new Singleton3();
                }
            }
        }
        return instance;
    }
}

还有很多其他写法可以扩展研究下。。。

posted @   流星<。)#)))≦  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示