📜  设计模式-单例模式(1)

📅  最后修改于: 2023-12-03 15:41:45.181000             🧑  作者: Mango

设计模式-单例模式

在软件开发中,单例模式是一种常见的设计模式。它在整个系统中只能创建一个实例,保证该实例的唯一性,并提供全局访问点来获取该实例。

实现方式

单例模式的实现方式可以分为两种:

懒汉式

懒汉式是指在第一次获取实例时才创建实例的方式。它的实现方式如下:

public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

该实现方式存在线程安全问题,多线程情况下可能会创建多个实例。可以通过加锁来解决线程安全问题,但是这样会影响性能。

饿汉式

饿汉式是指在类加载时就创建实例的方式。它的实现方式如下:

public class Singleton {
    private static Singleton instance = new Singleton();

    private Singleton() {}

    public static Singleton getInstance() {
        return instance;
    }
}

该实现方式不存在线程安全问题,但是会增加内存消耗,因为实例在程序启动时就会被创建。

应用场景

单例模式适用于如下场景:

  • 共享资源的访问控制,例如数据库连接池、线程池等。
  • 对象的创建需要消耗大量资源,例如配置文件等。
总结

单例模式是一种常见的设计模式,可以保证系统中某个对象的唯一性,并提供全局访问点来获取该实例。实现方式有懒汉式和饿汉式两种,应用场景主要是共享资源的访问控制和对象的创建需要消耗大量资源。