https://juejin.cn/post/7325069743143157801

单例模式是一种常见的设计模式,确保了一个类只有一个实例,并提供一个全局访问点来获取这个实例。以下是单例模式的一些优点和缺点:

优点:

  1. 资源控制:单例可以控制资源的使用,通过确保只有一个实例减少了对内存和资源的消耗。
  2. 全局访问点:单例对象可以从程序的任何位置被访问,而不需要将对象在各处传递。
  3. 共享实例:可以方便地共享和重用单个对象,很多时候用于访问共享资源,如配置信息、硬件接口等。
  4. 控制实例化:单例模式可以更精确地控制何时和如何访问资源。
  5. 减少名称空间污染:由于单例对象只实例化一次,因此它们可以减少全局变量的使用,从而减少名称空间的污染。

缺点:

  1. 全局依赖:单例对象的全局状态可能导致代码之间不适当的耦合,使得代码难以阅读和维护。
  2. 测试困难:单例模式的全局状态会使得单元测试很难执行,因为它们难以被模拟和隔离。
  3. 不适应变化:如果应用程序在未来需要多个实例,则单例模式可能会成为改变的障碍。
  4. 生命周期问题:单例的生命周期通常由程序全局管理,它们在整个应用程序生命周期内都存在,这可能导致对象的生命周期过长,并产生内存泄漏等问题。
  5. 多线程问题:如果不正确实现,单例在多线程应用程序中可能会导致并发问题。