如何确定应通过IOC容器构建哪些类,哪些不应该。我曾经处理过两个极端的项目,似乎只有当类指定了特定的技术,如日志记录或数据访问时才能使用接口?
人们在哪里画两条线?
答案 0 :(得分:3)
我不画任何一条线 - 越多越好。
会发生的事情是,您可以设法以更小的单位拆分API,越接近Single Responsibility Principle,因为隐藏在界面后面的所有东西都倾向于只做一件事,做得好。
通过将接口注入实现实现注入其他类型等的新接口的实现,您最终会得到一个非常灵活的结构,您可以在几乎任何级别上改变实现细节,并且每个协作者本身都非常简单。 / p>
凭借良好的DI容器和一些明智的约定,DI容器将自动为您处理大部分布线,因此配置不一定非常。
答案 1 :(得分:1)
DI容器实例化的类(假设使用了一个)应该是那些实现Separated Interface的类,并且需要在运行时根据执行环境选择。
然后您可以问:哪些类应该实现分离接口,哪些不应该? 创建新的单独界面基本上有两个原因:
供参考,请参阅:http://martinfowler.com/articles/injection.html#SeparatingConfigurationFromUse