我正在创建一个将我们的产品与另一个第三方产品集成的库。
正在使用的设计涉及一个界面,它抽象出我想要集成到我们产品中的核心操作,这样当发布新的第三方API时,我们会透明地切换到使用它而不是旧的而不进行修改现有代码。
为此,返回与第三方API交互的对象的具体实例的实际代码需要决定“选择哪个实现”。
对于简单需求,我假设配置文件中的条目足以说明完全限定的实现类名。
在这种情况下我应该使用IoC容器,还是应该使用Factory Method模式并自行编码? (使用反射来实例化对象等)。
这有什么优点和缺点?我错过了什么吗?
答案 0 :(得分:3)
答案 1 :(得分:1)
对于您的问题,IoC容器听起来有点过分。如果你只有一个要注入的依赖项,那么通过配置文件执行它应该没问题。
答案 2 :(得分:1)
任何IoC容器都不会过度杀伤。如果这个应用程序成功,或者至少经常使用,您将最终扩展此应用程序,并且您将收到添加更多内容的请求。
我是Castle用户,使用NuGet添加Castle非常容易,然后在启动时创建一个新的WindsorContainer()并注册您的接口和类。
这就像询问TDD制作一个简单的应用程序是否过度杀伤一样。你应该总是(如果可以的话)TDD应用程序,并在类中使用具体的接口。 IoC现在很容易设置,因为你只添加几行代码,为什么不呢?如果您最初没有使用IoC容器,并且在整个项目中都有接口和新建的类将它们全部组织回IoC容器中,那将会更加困难。