首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >依赖反演原理与好莱坞类比

依赖反演原理与好莱坞类比
EN

Software Engineering用户
提问于 2015-12-17 06:41:40
回答 2查看 1.9K关注 0票数 5

DIP通常被称为好莱坞原则:“不要打电话给我们,我们会给你打电话的。”

但是,不管是否存在依赖反转,高层模块不总是调用较低级别的模块吗?

那为什么DIP被称为好莱坞原则呢?

我是不是遗漏了什么?谢谢!

EN

回答 2

Software Engineering用户

发布于 2015-12-17 11:03:07

编写OO代码的一种常见方法是编写代码,如:

代码语言:javascript
复制
void SomeMethod()
{
    SomeClass x = new SomeClass(params...);
    ...
}

或代码,如:

代码语言:javascript
复制
void SomeMethod()
{
    SomeClass x = SomeStaticLocator.GetSomeClass();
    ...
}

在这两种情况下,代码都是通过“询问”获得系统的其他部分。

对于依赖注入/依赖反转,则采用相反的(逆)方法:

代码语言:javascript
复制
void SomeMethod(SomeClass x)
{
    ...
}

它不是要求它的依赖项的方法,而是被告知它们是什么。这有助于减少系统内部的耦合,并使测试更加简单。进一步的改进是设计接口,而不是具体类型来进一步解耦系统的各个部分:

代码语言:javascript
复制
void SomeMethod(ISomeClass x)
{
    ...
}

由于提供方法/类的依赖项,而不是它自己请求它们,所以术语"tell;不要问“和”不要打电话给我们,我们会打电话给您“通常用于总结DI的行为。

票数 8
EN

Software Engineering用户

发布于 2015-12-23 18:26:33

控制反转

如@davidarno所示,首先实例化较小的位,然后将其传递给它所属的对象的构造函数,从而构造自下而上,以此类推。换句话说,复合材料的构造已经倒置。

还请参阅下面的面向对象骰子示例

IOC启用依赖注入

现在,我们通过构造函数传递所需的对象--依赖项。沃拉。依赖注入传递参数是依赖注入。但更重要的是,我们现在可以注入不同的对象;通过指定基本类型和接口,还有更大的灵活性。

好莱坞原则

引用头第一设计模式

Hollywork原则为我们提供了一种防止“依赖腐朽”的方法。当您有依赖于低级别组件的高级别组件依赖于依赖于侧级组件依赖lo级别组件的高级别组件时,依赖腐烂就会发生,依此类推。根据Hollyworod原理,我们允许低级别组件连接到系统中,但是高级别组件决定何时需要它们,以及如何使用它们。换句话说,高水平组件给低水平组件一种“不要打电话给我们,我们会叫你”的治疗。

鲍勃·马丁的“清洁建筑”

好莱坞原则可以在文章

中看到

使此体系结构工作的压倒规则是依赖规则。这条规则规定,源代码依赖只能指向内部。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/305285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档