写点什么

架构师 0 期 week2- 作业

用户头像
小高
关注
发布于: 2020 年 06 月 17 日
架构师0期week2-作业

1、请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?

高层模块不能依赖于底层模块,而是大家都依赖于抽象。

抽象不能依赖实现,而是实现应该抽象。

这个原则给人的感觉是“面向接口编程,不针对现实编程”,但其实不是的,这里更强调抽象。在 Java 中,也就是抽象类。

那我们怎么理解这个倒置呢?举个例子,假设现在有一个披萨店,里面有很多具体的披萨,如:芝士披萨、海鲜披萨等等。这个披萨店就是上层模块,具体的披萨就是下层模块,就是披萨店的实现依赖于具体披萨的实现,这增加了系统的复杂度。

现在我们来倒置一下想法,披萨店不依赖这些具体的披萨了,而是从下层模块开始,抽象出一些共同点,进而抽象出一个抽象类,这就将这种关系倒置过来了,变成从下到上的实现了。

好莱坞原则的核心就是:"don‘t call us, we‘ll call you",这就是为什么依赖倒置又叫好莱坞原则的原因。上层模块需要下层模块时,会自己实现,而不需要下层模块的实现了。

2、请描述一个你熟悉的框架,是如何实现依赖倒置的。

Spring 框架就是典型的运用依赖倒置原则的框架。在 Spring 中实现依赖倒置的具体方式为:将对象注入到 Spring 容器中,当上层模块需要调用一个对象的时候,直接从容器中注入,不用自己实例化,由 Spring 进行实例,这就是 Spring 的核心技术:依赖注入。

3、请用接口隔离原则永华 Cache 类的设计,画出优化后的类图。

接口隔离原则:客户端不应该依赖它不需要的接口;类间的依赖关系应该建立在最小的接口上。

在接口隔离原则上催生出了一个”提供定制服务的概念“,何为提供定制服务呢?简单说,就是单独为一个个体提供优良的服务,即只提供访问者需要的方法。再回到题目,Cache 类中 reBuild()方法是我们上层模块可能用不到的,我们应该为这个方法重新定义一个接口,让这个接口”纯净一些“。当上层模块需要类似的服务时,实现另一个接口即可。如下图所示:


2020.6.17

用户头像

小高

关注

代码,思考,架构,阅读,旅行。 2018.11.02 加入

一起来进步吧,持续学习的小白!

评论

发布
暂无评论
架构师0期week2-作业