DIP通常被称为好莱坞原则:“不要打电话给我们,我们会给你打电话的。”
但是,不管是否存在依赖反转,高层模块不总是调用较低级别的模块吗?
那为什么DIP被称为好莱坞原则呢?
我是不是遗漏了什么?谢谢!
发布于 2015-12-17 11:03:07
编写OO代码的一种常见方法是编写代码,如:
void SomeMethod()
{
SomeClass x = new SomeClass(params...);
...
}或代码,如:
void SomeMethod()
{
SomeClass x = SomeStaticLocator.GetSomeClass();
...
}在这两种情况下,代码都是通过“询问”获得系统的其他部分。
对于依赖注入/依赖反转,则采用相反的(逆)方法:
void SomeMethod(SomeClass x)
{
...
}它不是要求它的依赖项的方法,而是被告知它们是什么。这有助于减少系统内部的耦合,并使测试更加简单。进一步的改进是设计接口,而不是具体类型来进一步解耦系统的各个部分:
void SomeMethod(ISomeClass x)
{
...
}由于提供方法/类的依赖项,而不是它自己请求它们,所以术语"tell;不要问“和”不要打电话给我们,我们会打电话给您“通常用于总结DI的行为。
发布于 2015-12-23 18:26:33
如@davidarno所示,首先实例化较小的位,然后将其传递给它所属的对象的构造函数,从而构造自下而上,以此类推。换句话说,复合材料的构造已经倒置。
还请参阅下面的面向对象骰子示例
现在,我们通过构造函数传递所需的对象--依赖项。沃拉。依赖注入传递参数是依赖注入。但更重要的是,我们现在可以注入不同的对象;通过指定基本类型和接口,还有更大的灵活性。
好莱坞原则
引用头第一设计模式
Hollywork原则为我们提供了一种防止“依赖腐朽”的方法。当您有依赖于低级别组件的高级别组件依赖于依赖于侧级组件依赖lo级别组件的高级别组件时,依赖腐烂就会发生,依此类推。根据Hollyworod原理,我们允许低级别组件连接到系统中,但是高级别组件决定何时需要它们,以及如何使用它们。换句话说,高水平组件给低水平组件一种“不要打电话给我们,我们会叫你”的治疗。
中看到

使此体系结构工作的压倒规则是依赖规则。这条规则规定,源代码依赖只能指向内部。
https://softwareengineering.stackexchange.com/questions/305285
复制相似问题