黑马程序员技术交流社区

标题: 设计模式之 依赖倒置原则:(dependence inversion principle) [打印本页]

作者: zlb820    时间: 2016-6-3 22:41
标题: 设计模式之 依赖倒置原则:(dependence inversion principle)
依赖倒置原则:(dependence inversion principle)

依赖倒置原则包含三层定义:
1.高层模块 不应该依赖底层模块,两者都应该依赖其抽象
2.抽象不应该依赖细节
3.细节应该依赖抽象
在java语言中,抽象就是借口或者抽象类,他们不能被实例化;细节就是实现类,实现接口或者继承抽象类而产生的类,他们可以实例化。
依赖倒置原则:更精简的说法就是 面向接口编程  OOD object oriented design。

接口:借口是契约,是约束设计双方必须遵守的约定,在设计中 我们遵从 约定优于

注意:在java语言中,变量有两种类型:表面类型和实际类型,表面类型是在定义时的赋予的类型,实际类型是对象的类型
比如 :IuserDao(表面类型) userdao=new UserDaoImpl(); 实际类型是 UserDaoImpl()

对象间的依赖关系,有三种方式注入
1.构造函数注入
2.set方法注入
3.接口注入

前两个用过框架的,应该很容易理解,因为框架一直就在用,
第三种是  在抽象的类或者接口定义的 方法的 输入参数中,传入 “参数接口”

那么如何去使用这个原则
需要遵循以下的规则:
1.设计时,每个类都尽量的拥有接口或者抽象类,或者两者都有
2.变量的表面类型最好是接口  比如 IuserDao(表面类型) userdao=new UserDaoImpl();
3.任何类都不应该从具体的类派生
4.尽量不要覆写 积累的方法
如果积累是一个抽象类,并且这个方法已经实现了,子类尽量不要覆写。类之间的依赖是抽象,覆写了抽象方法,对依赖的稳定性会产生一定的影响。


所谓的倒置,是相对于正置而言,正置是 类间的依赖是实实在在的实现类之间的依赖,而依赖倒置则是要将类抽取出接口,是思维方式的倒置。








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2