我刚开始学习鸭子打字和控制倒置。
在实际的现实世界中,为什么我要将这些概念合并到我的代码中?
答案 0 :(得分:7)
编码到接口有许多好处,即使您没有像评论中暗示的那样“为其他开发人员开发代码”。讨论这些好处是值得的,但是由于这个问题需要现实世界的例子/用例,这里有:
请注意我是如何尝试并仅提供带有非常明确用例的示例 。请注意,使用IoC和相关概念还有许多其他原因(例如,为了帮助生成模块化设计,提高可读性......)但是这样的原因/优点更加微妙,不那么客观,但也可能只是如此重要!
答案 1 :(得分:2)
据我所知,依赖注入是一种设计模式,它由Inversion of Control实现,更接近于软件设计的原则。
依赖注入的一个例子可能是将Car和Engine分成两个独立的类。汽车需要一个发动机才能运转,并且可以使用任何发动机运行。然后引擎依赖注入汽车。
IoC / Dependency的一个好处是明确分离类及其用途。在不制动代码的情况下,可以用另一个类替换一个类。依赖注入可以在运行时完成,这样可以轻松地重新配置软件。
答案 2 :(得分:1)
最近的一次经历告诉我,在使用IoC时,生活变得多么容易。在最近的一项工作中,我不得不清理用户提交的html。在项目的许多地方使用相同的清洁服务。但是之前的正则表达式清洁工并不适用于某些特定情况。我刚刚用JSoup
库编写了一个新实现,并在需要的地方进行了链接。使用Spring IoC切换变得如此简单:)
答案 3 :(得分:0)
就IoC主题引用此article:
使用面向对象的设计原则和功能(如接口,继承和多态),IoC模式可以实现更好的软件设计,以便促进重用,松散耦合和< em>轻松测试软件组件。
(强调我的)
这听起来像是我很好的理由。你在寻找更多吗?
至于Duck Typing,陪审团仍然没有,IMO。它在某些情况下有一些很好的好处,但会导致更多的运行时错误。
答案 4 :(得分:0)
IoC基本上可以帮助您在开发时将实例化与代码分离。因此,运行时对象可以被一些称为容器的外部代理注入(而不是代码实例化它们) - 只要它们遵守接口即可。程序到界面是设计模式书中的第一个原则。而且优势很大。在IoC中,它有助于解耦代码。
依赖注入和依赖性拉取是IoC的两种不同形式。
看看这个link
一个侧面点 - 在java世界中,Spring框架甚至允许引入新方法。
不确定DuckTyping。