背景
这个文章主要介绍DIP、Ioc、Ioc容器和DI以及如何更好的理解这些概念,对这些概念有了理解之后我会更好的设计组织我们的程序,更好的使用Spring Ioc容器。
依赖倒置原则(DIP):一种设计原则。
控制反转(Ioc):遵循DIP原则的一种思想或者说是设计模式。
依赖注入(DI):实现Ioc的一种手段、方法。
Ioc容器:DI框架。
依赖倒置原则(DIP)
DIP是面向对象设计(OOD)五大原则之一。注意这是一种OOD原则,并不是面向对象编程原则(OOP)。依赖倒置原则官方给出的定义是这样的:
1,高层模块不应该依赖低层模块,两者都应该依赖抽象。(面向接口编程)
2,抽象不应该依赖细节,细节应该依赖于抽象。(声明变量和参数时候,应该声明类的抽象(接口或抽象类))
官方给的定义读起来挺绕口而且不好理解,其实这样的定义主要说了两个意思:
第1句话可以这样理解:高层模块依赖与低层模块,当低层模块发生改动,会影响高层模块。所有高层和底层模块都应该依赖于接口,通过接口来降低模块之间的耦合度。
第2句话可以这样理解:就是面向接口编程。不论高层模块和底层模块都应该被抽象,然后由具体的类去实现。变量、参数类型的声明都应该是抽象类型,而不应该是具体类类型。
在三层(UI、BLL、DAL)的程序架构中UI和BLL相对来说UI是高层模块,BLL是低层模块。BLL和DAL相对来说BLL是底层模块,DAL是高层模块。比如说我有一个文件操作类FileOper