Aca*_*uza 2 dependency-injection terminology inversion-of-control
IoC = 控制反转
DIP = 依赖倒置原理(SOLID 中的 D)
IoC == DIP?我想是这样的,确实如此。
构建软件的世界已经如此混乱,为什么还要用这么多词来表达同样的事情呢?
(我知道DI (依赖注入),它与DIP和IoC不同)
更新:
根据答案,我们可以说: ( DI ) + ( IoC ) = (依赖倒置原理) ?
控制反转是通用术语。依赖注入是一种特定类型的 IoC。
请参阅控制反转容器和依赖项注入模式。
依赖倒置原则是一个指导原则,而其他术语是对技术的描述。(IoC 也可以用来描述原理,因此这可能会令人困惑。)
用在一句话中:
Sue 遵循依赖倒置原则,在类的构造函数中使用依赖注入,并使用控制反转容器创建实例。
更新:
我不认为(DI) + (IoC) = (依赖倒置原则)是准确的。这就像说(苹果) + (食物) = (良好的营养)。每个术语都有特定的含义。
我认为你不会在这个问题上得到权威的答案,因为“IoC”这个术语有点过多,说“IoC 的真正含义是……”有点迂腐。但无论如何我都会分享我的意见:)
依赖倒置是指依赖于抽象。考虑一个HelloWorld依赖于IStringWriter和 实现类的类ConsoleStringWriter。
控制反转是指框架/基础设施调用应用程序代码,而不是相反。例如,当用户关闭 WPF 应用程序时,您不会调用框架,它会引发一个您可以订阅的事件。
它们经常被结合起来。例如,Hibernate 依赖于其Interceptor 接口定义的抽象来实现 IoC。从拦截器的角度来看,控制是颠倒的——Hibernate 调用拦截器。您经常看到的另一个示例是,IHandle<T>T 是事件、命令或消息 - 基础设施在正确的时间调用处理程序。
这很令人困惑,因为我们称它们为“IoC 容器”,但您可以在不进行 IoC 的情况下进行 DI。如果你将 a 注入ConsoleStringWriteraHelloWorld我真的不认为这是 IoC,因为没有“框架”或“基础设施”。但这是因为 Hello World 很琐碎 - 随着应用程序变得更加复杂,对 IoC 的需求也会增加。
另请参阅此问题和接受的答案。
| 归档时间: |
|
| 查看次数: |
1414 次 |
| 最近记录: |