控制反转如何真正起作用

自十年前Martin FowlerRobert Martin其他人描述IoC以来,它已经成为许多框架和面向对象设计的基础概念。 尽管IoC非常流行,但它经常被误解和过于复杂。

保罗·索伦蒂诺(Paolo Sorrentino)的《勒阿塞莫格斯·德尔摩尔》(2004)

看下面的代码:

print(book.title());

这非常简单:我们从书中检索标题,然后将其简单地交给print()过程,或者其他可能的过程。 我们负责, 控制掌握在我们手中。

与此相反,这是反转

print(book);

我们将整本书交给过程print()并在感觉合适时调用title() 。 也就是说,我们委派控制权。

您几乎需要了解有关IoC的所有信息。

它与依赖注入容器有关系吗? 好吧,当然,我们可以将书放入容器中,将整个容器注入print() ,让它从容器中检索书,然后调用title() 。 但这并不是IoC真正的目的,它只是其变态的使用场景之一。

IoC的要点与我以前的文章中有关裸数据对象朋友的提议完全相同:我们不能处理数据 ,而只能处理对象组成 。 在给定的示例中,如果我们完全摆脱print()过程,并用一个对象替换它,则设计会更好:

new PrintedBook(book);

那将是纯粹的对象合成

关于这个问题,没有更多的话要说了。 我希望我已经为您解决了它—就是这么简单。

翻译自: https://www.javacodegeeks.com/2017/05/inversion-control-really-work.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值