依赖注入,实现更改而无需重新编译

时间:2011-12-29 23:29:57

标签: dependency-injection

我从单身人士的角度理解DI的好处并减少锅炉板代码。但我也在维基百科上发现了这个:

  

另一个好处是它提供了配置灵活性,因为   可以不使用给定服务的替代实现   重新编译代码

当我使用Spring或Guice时,它总是在1个服务和1个实现之间签订合同。我错过了一个功能或错误地理解了这个陈述吗?

2 个答案:

答案 0 :(得分:2)

您通常必须重新编译包含配置的应用程序部分,但应用程序的其余部分可以保持不变。当这些部件放在单独的模块/组件中时,不需要重新编译这些部件。使用XML配置容器时(理论上)不需要重新编译。

如果愿意,你甚至可以更进一步改变运行时的行为(例如使用装饰器)。

答案 1 :(得分:0)

如果决定使用哪个实现给定服务,那么只要您想要使用的替代实现已经存在,您就可以完全在配置中更改该决策,而不需要更改代码。

在很大程度上,Spring的情况很明显,这个决定通常是在应用程序启动时读取的XML配置文件。