【架构师训练营】第 2 周作业
作业一:请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
答:
依赖倒置原则(Dependence Inversion Principle,DIP)是 Object Mentor 公司总裁罗伯特·马丁(Robert C.Martin)于 1996 年在 C++Report 上发表的文章。
依赖倒置原则的原始定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象(High level modules shouldnot depend upon low level modules.Both should depend upon abstractions.Abstractions should not depend upon details. Details should depend upon abstractions)。其核心思想是:要面向接口编程,不要面向实现编程。
从上面的定义看出来,依赖倒置原则有2个要点:
高层模块不应该依赖低层模块,二者都应该依赖抽象。
抽象不应该依赖具体实现,具体实现应该依赖抽象。
好莱坞原则是:“Don’t call me,I will call you”。你不要找我,我来找你。依赖倒置原则与好莱坞法则一一样,都是“高层找低层”,即不要来调用我,我会调用你。
依赖倒置原则让我们要面向接口编程,不要面向实现编程。
作业二:请描述一个你熟悉的框架,是如何实现依赖倒置原则的?
web开发中最常用的就是Tomcat,Tomcat是运行Java Web应用程序的容器。
Tomcat实现依赖倒置:我们开发的Web应用程序代码部署在Tomcat容器下,就可以被Tomcat 容器调用执行。这里面Tomcat就是高层模块,我们开发的Web应用程序代码就是低层模块。Tomcat和应用程序代码之间并没有直接的依赖关系,两者都依赖同一个“抽象”,即Servlet规范。Servlet规范不依赖具体的Tomcat容器和应用程序的实现细节,而Tomcat和应用程序依赖Servlet规范。
作业三:请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。
优化后类图如下:
评论