控制反转 - IoC
OO
目的在于解决代码复用问题,相互依赖导致的团队协同效率低下问题,以及后期维护和功能模块扩展的问题。设计的前提是要明确类的职责,和不同类之间的联系——是通过什么方式建立的,又可以转换成什么样的形式,等等。设计应当符合OCP,将经常或可能发生变化的部分与比较稳定的部分隔离开来,以最大限度地降低维护代价。
IoC
控制反转的概念是将多个模块之间的相互依赖转换为对一个中间模块的共同依赖,通常是依赖注入;或者通过Autofac使用反射机制来实现依赖关系扫描注入。
依赖注入 - DI
假设这是原有依赖关系:
IoC所做的是转换依赖关系
现在将层级的依赖关系变成了以接口为核心的联系。客户类不依赖于服务类,服务类和客户类都依赖于一个接口,服务类有一个接口成员,用于注入某个具体服务类A或B的实例。上下文(客户类的客户类),依赖服务类和客户类,上下文中实施依赖注入这一过程。
依赖获取 - DL
通过Autofac扫描配置文件,自动添加依赖关系