GOF 设计模式小白教程之单例模式

本贴最后更新于 1940 天前,其中的信息可能已经斗转星移

单例模式(Singleton)

定义:

该模式只涉及到一个类,该类负责创建自己的对象,同时确保只有唯一一个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

通俗解释:

好比以前的计划生育一对夫妻只能有一个孩子,因为生育抚养孩子的成本太高了。所以限制只能有一个。单例模式也是如此,为了节省创建对象的成本或节省对象占用的内存空间而实现的模式。

单例模式最重要的三点特征如下:

  • 单例类只有一个实例对象;
  • 该单例对象必须由单例类自行创建;
  • 单例类对外提供一个访问该单例的全局访问点;

代码:

双重检测加 volatile 的单例模式

public class Singleton {

    private volatile static Singleton instance = null;

    private Singleton() {}

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

解析:

  1. 在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例。
  2. 避免对资源的多重占用。
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    200 引用 • 120 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...