如何确定哪些类应该通过IOC容器构建,哪些不应该。我曾经在两种极端的项目上工作过,似乎只有在类指定特定技术(如日志记录或数据访问)时才应该使用接口?
人们是通过什么来区分这两者的呢?
如何确定哪些类应该通过IOC容器构建,哪些不应该。我曾经在两种极端的项目上工作过,似乎只有在类指定特定技术(如日志记录或数据访问)时才应该使用接口?
人们是通过什么来区分这两者的呢?
我不会画任何线条 - 越多越好。
发生的事情是,您将API拆分为小单元的能力越强,就越接近单一职责原则,因为隐藏在接口后面的所有内容都倾向于只做一件事,并且做得很好。
通过将接口注入到实现中,实现新接口并将其注入到其他类型中,等等,您最终将获得一个非常灵活的结构,在该结构中,您可以在几乎任何级别上变化实现细节,每个协作者本身都非常简单。
通过良好的DI容器和一些明智的约定,DI容器将自动为您处理大部分连接工作,因此配置不必过于复杂。
DI容器(假设使用了一个)要实例化的类应该是那些实现了分离接口的类,并且需要根据执行环境在运行时进行选择。
然后你可能会问:哪些类应该实现分离接口,哪些不应该呢? 基本上有两个原因来创建一个新的独立接口:
参考文献:http://martinfowler.com/articles/injection.html#SeparatingConfigurationFromUse