| 问题 | 隐藏依赖 / 无法替换 / 测试污染 |
|---|---|
| 替代 | DI 容器注册单实例并注入 |
| 过渡 | 依赖倒置:把单例藏到接口后面 |
改造方向
改造方向
// 之前:方法内部 Config.getInstance()
// 之后:构造函数注入 Config(容器保证唯一实例)
OrderService(Config config) { ... }单例把依赖藏进全局访问点:调用方看不出依赖、测试无法替换、并行测试互相污染;替代方案是显式注入共享实例(容器作用域单例),让依赖出现在签名里。
| 问题 | 隐藏依赖 / 无法替换 / 测试污染 |
|---|---|
| 替代 | DI 容器注册单实例并注入 |
| 过渡 | 依赖倒置:把单例藏到接口后面 |
// 之前:方法内部 Config.getInstance()
// 之后:构造函数注入 Config(容器保证唯一实例)
OrderService(Config config) { ... }