❌ 停止使用 Singleton。你并不需要它(它正在悄悄伤害你的代码)
发布: (2026年1月16日 GMT+8 14:07)
2 min read
原文: Dev.to
Source: Dev.to
Singleton 的作用
Singleton 确保一个类只有唯一的实例,并且该实例可以全局访问。
Logger.getInstance().log("Hello");
唯一实例。全局访问。
真正的问题
Singleton 其实就是全局状态。
代码的任何部分都可以访问它、修改它、并在不显式声明的情况下依赖它。这会让系统更难理解、测试和修改。
为什么高级工程师会回避它
Singleton 往往导致:
- 隐蔽的依赖
- 单元测试困难
- 状态在请求之间泄漏
- 类之间的紧耦合
看似便利的做法,往往会在以后变成技术债务。
更好的做法
不要去访问全局对象,而是显式地传递依赖。
这样依赖关系清晰可见,代码更易于测试,系统也更灵活。
一个简单的准则
如果传递依赖让你觉得麻烦,说明应该采用更好的设计——而不是使用 Singleton。