【发布时间】:2022-01-18 15:21:23
【问题描述】:
据我了解,基本的依赖注入意味着不是在类内部创建依赖项,而是在外部创建依赖项并将其作为参数传入。
假设您有一个 Logger 类,它执行一些操作,然后写入日志,它依赖于 WriteToFile 对象。无需在 Logger 类中创建 WriteToFile 对象,而是在外部创建它,并在每次创建新的 Logger 实例时将其作为参数传入。
让我感到困惑的是,假设您的代码中有 1,000 个地方创建了 Logger 对象,并假设出于某种原因您不再需要在 Logger 类中使用 WriteToFile 对象...
如果没有 DI,您只需删除 Logger 类中创建并使用 WriteToFile 对象的代码。这可能需要几秒钟。
但是使用 DI,您必须找到创建 Logger 对象的那 1,000 个位置,并删除创建 WriteToFile 对象的代码并将其作为参数传递。
这是正确的还是我遗漏了一些重要的东西?
【问题讨论】:
-
依赖注入在一个位置创建所有服务:Composition Root... 但Logging is not a Service,这是一个横切关注点。
标签: oop dependency-injection dependencies