❌ 停止使用 Singleton。你并不需要它(它正在悄悄伤害你的代码)

发布: (2026年1月16日 GMT+8 14:07)
2 分钟阅读
原文: Dev.to

Source: Dev.to

Singleton 的作用

Singleton 确保一个类只有唯一的实例,并且该实例可以全局访问。

Logger.getInstance().log("Hello");

唯一实例。全局访问。

真正的问题

Singleton 其实就是全局状态。
代码的任何部分都可以访问它、修改它、并在不显式声明的情况下依赖它。这会让系统更难理解、测试和修改。

为什么高级工程师会回避它

Singleton 往往导致:

  • 隐蔽的依赖
  • 单元测试困难
  • 状态在请求之间泄漏
  • 类之间的紧耦合

看似便利的做法,往往会在以后变成技术债务。

更好的做法

不要去访问全局对象,而是显式地传递依赖。
这样依赖关系清晰可见,代码更易于测试,系统也更灵活。

一个简单的准则

如果传递依赖让你觉得麻烦,说明应该采用更好的设计——而不是使用 Singleton。

Back to Blog

相关文章

阅读更多 »

Go 中优雅的领域驱动设计对象

❓ 你如何在 Go 中定义你的领域对象?Go 并不是典型的面向对象语言。当你尝试实现 Domain‑Driven Design(DDD)概念,如 Entity …

Slices:微服务的合适规模

Slices:微服务的合适规模 粒度陷阱 每个采用 microservices 的团队最终都会碰到同一堵墙:服务应该有多大?…