首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >现实地说,我为什么要使用鸭子类型或反转控制?

现实地说,我为什么要使用鸭子类型或反转控制?
EN

Stack Overflow用户
提问于 2011-04-18 12:19:53
回答 5查看 472关注 0票数 2

我刚刚开始学习Duck-typing和Inversion of Control。

在实际的示例中,我为什么要将这些概念合并到我的代码中呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-18 12:30:09

对接口进行编码有很多好处,即使您不像您的评论中所暗示的那样“为其他开发人员开发代码”。讨论这些好处是一个有价值的练习,但由于该问题要求提供真实世界的示例/用例,因此如下所示:

用于测试的

  • 。IoC使得引入模拟和其他简化/测试类变得很容易,这些类允许测试特定的单元,而不必引入项目的所有依赖项。
  • 用于在某些依赖项可用之前实现应用程序的特定部分。(与测试用例类似)
  • 为不同的用户提供不同的功能集。您可以拥有给定模块的多个“版本”,并将适当的模块交付给不同类型的客户:评估版、标准版、高级版,甚至Beta测试版。只要模块的应用编程接口得到尊重,应用程序的其余部分就可以正常工作,而不必担心使用的模块的特殊性质。
  • 使用特定的框架。这个例子可能被认为是一个循环引用:“为什么这些框架首先使用IoC?”,但事实是,IoC模式在几个库和框架中无处不在,这本身就非常有用。
  • 创建拦截器。虽然拦截器是一个有用的调试设备,但它们也可以用于许多目的。

请注意我是如何尝试的,并且只提供了具有非常清晰的用例的示例。请注意,使用IoC和相关概念还有许多其他原因(例如,帮助生成模块化设计,提高可读性……)但这样的原因/优势更微妙,更不客观,但同样重要!

票数 6
EN

Stack Overflow用户

发布于 2011-04-18 12:29:47

据我所知,依赖注入是一种设计模式,它是通过控制反转来实现的,这更接近于软件设计的原则。

依赖注入的一个例子可能是将汽车和引擎分离到两个单独的类中。汽车需要一个引擎才能工作,并能在任何引擎下运行。然后发动机被依赖注入到汽车中。

IoC/依赖的一个好处是清楚地分离了类及其用途。一个类可以被另一个类替换,而不会中断你的代码。依赖注入可以在运行时完成,这允许轻松地重新配置您的软件。

票数 2
EN

Stack Overflow用户

发布于 2011-04-18 12:41:07

最近的一次经历让我明白了使用IoC是多么的简单。在最近的一项工作中,我不得不清理用户提交的html。在项目中的许多地方都使用了相同的清理服务。但是以前的正则表达式清理器不适用于某些特定的情况。我刚刚用JSoup库编写了一个新的实现,并将其链接到需要的地方。有了Spring IoC,切换变得如此简单:)

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

https://stackoverflow.com/questions/5698479

复制
相关文章

相似问题

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