应该通过IOC容器构建什么?

时间:2009-12-09 09:42:28

标签: .net dependency-injection inversion-of-control

如何确定应通过IOC容器构建哪些类,哪些不应该。我曾经处理过两个极端的项目,似乎只有当类指定了特定的技术,如日志记录或数据访问时才能使用接口?

人们在哪里画两条线?

2 个答案:

答案 0 :(得分:3)

我不画任何一条线 - 越多越好。

会发生的事情是,您可以设法以更小的单位拆分API,越接近Single Responsibility Principle,因为隐藏在界面后面的所有东西都倾向于只做一件事,做得好。

通过将接口注入实现实现注入其他类型等的新接口的实现,您最终会得到一个非常灵活的结​​构,您可以在几乎任何级别上改变实现细节,并且每个协作者本身都非常简单。 / p>

凭借良好的DI容器和一些明智的约定,DI容器将自动为您处理大部分布线,因此配置不一定非常。

答案 1 :(得分:1)

DI容器实例化的类(假设使用了一个)应该是那些实现Separated Interface的类,并且需要在运行时根据执行环境选择。

然后您可以问:哪些类应该实现分离接口,哪些不应该? 创建新的单独界面基本上有两个原因:

  1. 需要来打破系统两个部分之间的依赖关系(只是因为你可以避免这样做)。
  2. 您将拥有多个独立的实现(请记住,以后通过重构通常很容易引入单独的接口,因此应该避免“假设”思考。)
  3. 供参考,请参阅:http://martinfowler.com/articles/injection.html#SeparatingConfigurationFromUse