23种设计模式-依赖倒转原则

概念:

依赖倒转原则(Dependence Inversion Principle)是指:

1) 高层模块不应该依赖低层模块,二者都应该依赖其抽象

2) 抽象不应该依赖细节,细节应该依赖抽象

3) 依赖倒转(倒置)的中心思想是面向接口编程

4) 依赖倒转原则是基于这样的设计理念:

        相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。

        在java中,抽象指的是接口或抽象类,细节就是具体的实现类

5) 使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,把展现细节的 任务交给他们的实现类去完成。

理解:

整理理解是,要面向接口编程,有通用的同类方法要抽象出来,具体的实现交给实现方法。例如:吃饭,人吃饭,动物也吃饭,那么吃饭这个动作就可以抽象出来,具体谁吃饭,由实现吃饭这个接口的类去管理定义。

实例:

定义一个人类的类,和吃饭的人类吃饭的类

23种设计模式-依赖倒转原则_第1张图片

23种设计模式-依赖倒转原则_第2张图片

23种设计模式-依赖倒转原则_第3张图片

23种设计模式-依赖倒转原则_第4张图片

 以上代码可以看到,如果人要吃饭,那么需要给Eat.eatAll()方法传入一个人的类。那么,如果动物吃饭怎么办?就需要再建一个动物类和动物吃饭的类。这样改动量很大,那么优化就是,将吃饭这个操作抽象出来,让人和动物去实现。

优化:

1.抽取一个吃的动作接口

23种设计模式-依赖倒转原则_第5张图片

2.让人的这个类实现这个接口

23种设计模式-依赖倒转原则_第6张图片

3.调用的方法以前是传入实体类,现在直接传入一个接口

23种设计模式-依赖倒转原则_第7张图片

4.mian方法调用不需要改变

23种设计模式-依赖倒转原则_第8张图片

23种设计模式-依赖倒转原则_第9张图片

这样的好处是,如果再有动物需要吃东西的话,那么直接加一个动物的类然后实现吃的接口即可 

 23种设计模式-依赖倒转原则_第10张图片

23种设计模式-依赖倒转原则_第11张图片 23种设计模式-依赖倒转原则_第12张图片

 小结:

1、依赖倒转的中心思想是:面向接口编程,传入的参数可以是一个接口

2、将动作抽象出来,具体细节依赖抽象,也就是通用动作抽取出来,谁用谁实现。

你可能感兴趣的:(设计模式,设计模式,java)