有人可以向我描述一些DI术语吗?

时间:2009-05-09 17:27:32

标签: php dependency-injection terminology

我正在为PHP 5编写DI框架,我一直试图找到与依赖注入有关的一些单词的“官方”定义。其中一些词是“上下文”和“生命周期”。而且,我称之为创建/注入的对象是什么?最后,组件和服务之间的区别是什么,以及哪个术语(如果有的话)应该调用可以注入的对象?

我已经阅读了Martin Fowler的文章并浏览了其他DI框架(Phemto,Spring,Google Guice,Xyster等),但我想知道你的想法。谢谢!

2 个答案:

答案 0 :(得分:2)

计算机编程中的依赖注入(DI)是指向软件组件提供外部依赖的过程。它是一种特定形式的控制反转,其中被反转的问题是获得所需依赖的过程。

  • 生命周期:单身,每请求,瞬态......应该在容器中存活多久
  • 组件:更简单的定义可以是:组件是写入规范的对象。规范是什么并不重要:COM,Enterprise JavaBeans等,只要该对象符合规范。
  • 服务:术语服务是指一组离散定义的连续和自主业务或技术功能。
  • context:所提供的实现的容器级别与消费者的分离。例如,绿色页面上的黄金合作伙伴将为红袜子提供15%的折扣。

玩得开心:)

答案 1 :(得分:1)

我不知道有一个'官方'的定义。福勒的文章是我在DI上读到的第一篇文章。如果这对你来说不够权威,我看不出SO会如何改进。

“透视”对你意味着什么?你读了多少文件?你有没有尝试用它编写任何应用程序?如果你用Spring和Guice编写代码,你已经为自己做了很好的调查。如果您刚刚阅读了Google带回来的一些文章,那么您还有更多工作要做。

Spring中的'Context'意味着工厂用于为您实例化对象。我通常每个应用程序或Web应用程序有一个。我的应用程序通常是创建对象的“上下文”。

'生命周期'与DI没有区别 - 它与创建,初始化,使用和销毁对象的时间有关。

组件是单个软件工件中的数据和操作。服务是执行业务重要操作的特殊组件,通常分布在网络上。服务通常是组件,但并非所有组件都是服务。它们不是同义词。

您可以在没有DI框架的情况下编写组件或服务。如果它可以帮助你调用注入对象的组件,那就做我的客人。

我很好奇:为什么强调这些东西的名字?命名当然很重要,但这不是DI的主要问题。