Files
Hui-s-notebook/单例模式.md
2023-09-10 10:50:53 +08:00

1.1 KiB
Raw Permalink Blame History

一个类只能产生一个对象

Ensure a class has only one instance, and provide a global point of access to it.确保某一个类只有一个实例而且自行实例化并向整个系统提供这个实例。)

优点

  • 内存中只有一个实例,减少内存开销
  • 当一个对象的产生需要比较多的资源时,比如读取配置、产生其它依赖对象时,可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决
  • 避免对资源的多重占用
  • 在系统设置全局的访问点,优化和共享资源访问

缺点

  • 没有接口,扩展困难
  • 对测试不利
  • 与单一职责有冲突

使用场景

  • 生成唯一序列号
  • 需要一个共享访问点或共享数据
  • 创建一个对象需要消耗的资源过多
  • 需要定义大量的静态常量和静态方法的环境

注意事项

  • 高并发时,单例模式的线程同步问题
  • 考虑对象的复制情况,不实现 Cloneable 接口防止复制

扩展

有上限的多例模式

Spring 中每个 Bean 都是默认单例