设计模式示例-单例模式示例

单例模式是一种常用的软件设计模式,其目的是确保一个类只有一个实例,并提供一个全局访问点。以下是一个简单的单例模式示例:

java

public class Singleton {
    // 私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载
    private static Singleton instance = null;

    // 私有构造方法,防止被实例化
    private Singleton() {
    }

    // 静态工厂方法,创建实例
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

在这个例子中,Singleton 类有一个私有的静态变量 instance,它用于存储类的唯一实例。Singleton 类有一个私有的构造方法,防止外部通过 new 关键字创建实例。getInstance 方法用于返回 instance 变量的值,如果 instance 为 null,则创建一个新的 Singleton 实例并返回。

这种方式实现的单例模式被称为“懒汉模式”,因为实例是在第一次调用 getInstance 方法时创建的。这种方式的优点是实现了延迟加载,但缺点是在多线程环境下可能会创建多个实例。为了解决这个问题,可以使用“双重检查锁定”模式:

 

java

复制

public class Singleton {
    // 私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载
    private static volatile Singleton instance = null;

    // 私有构造方法,防止被实例化
    private Singleton() {
    }

    // 静态工厂方法,创建实例
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class ) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

在这个例子中,instance 变量被声明为 volatile,以确保在多线程环境下,instance 的值在第一次创建后不会被重排序。这样可以保证 instance 的值在多线程环境下的一致性。

上一篇:使用UDP完成网络单词查询,利用dict数据库


下一篇:MySQL知识整理-基础