作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在我的代码中添加依赖注入(inject),因为它使代码更容易通过模拟进行单元测试。
但是,我要求调用链上层的对象了解调用链下层的对象。
这是否违反了德墨忒尔法则?如果是的话,这有什么关系吗?
例如:类 A 依赖于接口(interface) B,要使用的该接口(interface)的实现被注入(inject)到类 A 的构造函数中。任何想要使用类 A 的人现在都必须拥有对 B 的实现的引用.并且可以直接调用其方法并了解其子组件(接口(interface)B)
维基百科关于得墨忒耳定律的说法是:“基本概念是给定的对象应该尽可能少地假设其他任何事物(包括其子组件)的结构或属性。”
最佳答案
依赖注入(inject)可能会破坏德米特法则。如果你强制消费者进行依赖项的注入(inject)。这可以通过静态工厂方法和 DI 框架来避免。
您可以通过以需要传入依赖项的方式设计对象来同时拥有一种使用它们的机制,而无需显式执行注入(inject)(工厂函数和 DI 框架)。
关于oop - 依赖注入(inject)是否违反了德米特法则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/160032/
我是一名优秀的程序员,十分优秀!