IoC容器对于一个非常简单的框架来说是一种过度杀伤力

时间:2011-12-09 22:54:16

标签: c# design-patterns dependency-injection inversion-of-control

我正在创建一个将我们的产品与另一个第三方产品集成的库。

正在使用的设计涉及一个界面,它抽象出我想要集成到我们产品中的核心操作,这样当发布新的第三方API时,我们会透明地切换到使用它而不是旧的而不进行修改现有代码。

为此,返回与第三方API交互的对象的具体实例的实际代码需要决定“选择哪个实现”。

对于简单需求,我假设配置文件中的条目足以说明完全限定的实现类名。

在这种情况下我应该使用IoC容器,还是应该使用Factory Method模式并自行编码? (使用反射来实例化对象等)。

这有什么优点和缺点?我错过了什么吗?

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

对于您的问题,IoC容器听起来有点过分。如果你只有一个要注入的依赖项,那么通过配置文件执行它应该没问题。

答案 2 :(得分:1)

任何IoC容器都不会过度杀伤。如果这个应用程序成功,或者至少经常使用,您将最终扩展此应用程序,并且您将收到添加更多内容的请求。

我是Castle用户,使用NuGet添加Castle非常容易,然后在启动时创建一个新的WindsorContainer()并注册您的接口和类。

这就像询问TDD制作一个简单的应用程序是否过度杀伤一样。你应该总是(如果可以的话)TDD应用程序,并在类中使用具体的接口。 IoC现在很容易设置,因为你只添加几行代码,为什么不呢?如果您最初没有使用IoC容器,并且在整个项目中都有接口和新建的类将它们全部组织回IoC容器中,那将会更加困难。