依赖倒置原则(DIP)

用户头像
leo
关注
发布于: 2020 年 09 月 27 日
依赖倒置原则(DIP)

依赖倒置原则定义



📌High level modules should not depend upon low level modules, Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions



翻译过来:

  • 高层模块不依赖低层模块,两者都应该依赖其抽象

  • 抽象不应该依赖细节

  • 细节应该依赖抽象

按照Java的理解,是面向接口编程

依赖倒置原则作用

降低类间的耦合性



类间的依赖都是通过接口完成的,某个类的实现变了,也不影响上游代码。

减少并行开发引起的风险



各层级,模块间都是通过接口定义的约束,只要都遵循这些约束,能相应减少了并行开发的冲突。

依赖倒置的实现方法

构造函数传递依赖对象

public class Driver {
private Car car;
public Driver(Car car) {
this.car = car;
}
public void drive() {
this.car.run();
}
}

Setter方法传递依赖对象



public class Driver {
private Car car;
public void setCar(Car car) {
this.car = car;
}
public void drive() {
this.car.run();
}
}

接口声明依赖



public class Driver {
public void drive(Car car) {
car.run();
}
}

好莱坞原则



don't call us, we'll call you



因为在好莱坞,把简历递交给演艺公司后就只有回家等待。由演艺公司对整个娱乐项的完全控制,演员只能被动式的接受公司的差使,在需要的环节中,完成自己的演出。



为什么有时候依赖倒置原则又被称为好莱坞原则



好莱坞有一个角色,找演员来演



好莱坞相当于高层,演员们相当于低层,他们间的联系是通过某个角色,



这个角色由哪个演员来演都可以,并不依赖于具体某个演员,



整个流程有点像面向接口编程。



📌两个原则强调的点应该是不一样的,查到的资料给我的感觉是:

好莱坞原则:强调的是高层对底层的主动调用

依赖倒置原则:强调的是面向接口编程

有点类似,但又不全是。



接口隔离原则优化 Cache 类





提示

cache 实现类中有四个方法,

其中 put get delete 方法是需要暴露给应用程序的,

rebuild 方法是需要暴露给系统进行远程调用的。

如果将 rebuild 暴露给应用程序,应用程序可能会错误调用 rebuild 方法,导致 cache 服务失效。

按照接口隔离原则:不应该强迫客户程序依赖它们不需要的方法。也就是说,应该使 cache 类实现两个接口,一个接口包含 get put delete 暴露给应用程序,一个接口包含 rebuild 暴露给系统远程调用。从而实现接口隔离,使应用程序看不到 rebuild 方法。





发布于: 2020 年 09 月 27 日 阅读数: 15
用户头像

leo

关注

还未添加个人签名 2018.03.23 加入

还未添加个人简介

评论

发布
暂无评论
依赖倒置原则(DIP)