架构师训练营 -- 第二周作业
作业一
请描述什么是依赖倒置原则
即调用链上层的业务模块实现不需要依赖下层的业务模块,双方通过抽象进行依赖,其中抽象不依赖于实现细节,但是实现细节需要依赖于抽象。
为什么有时候依赖倒置原则又被称为好莱坞原则?
“不要给我们打电话,我们会给你打电话(Don’t call me, I’ll call you)”这是著名的好莱坞原则。在好莱坞,把简历递交给演艺公司后就只有回家等待。由演艺公司对整个娱乐项的完全控制,演员只能被动式的接受公司的差使,在需要的环节中,完成自己的演出。
引申到软件设计领域,依赖倒置原则描述的信息如上述所示,套用到好莱坞原则里面,就是将下层的业务模块在使用之前就通过框架/其他手段进行提前初始化设置,而不需要在具体何时被上层进行调用时进行初始化,简单理解就是你下层的只管先注册,之后何时会使用到,得等我上层何时业务模块调用你,具体的等通知。所以说这时候依赖倒置原则又被成为好莱坞原则
作业二
熟悉框架--tomcat
因为平常使用的web容器基于tomcat居多,这边就是用tomcat来简单说明下如何实现的依赖倒置原则。
如何实现依赖倒置原则
Tomcat 是运行 Java Web 应用程序的容器。我们编写的 Web 应用程序代码只需要部署在 Tomcat 容器下,便可以被 Tomcat 容器调用执行。按照之前的划分原则,Tomcat 就是上层模块,我们编写的 Web 应用程序代码就是下层模块。Tomcat 和应用程序代码之间并没有直接的依赖关系,两者都依赖同一个“抽象”,也就是 Servlet 规范。Servlet 规范不依赖具体的 Tomcat 容器和应用程序的实现细节,而 Tomcat 容器和应用程序依赖 Servlet 规范。
作业三
cache类优化处理
请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。
作业三提示:cache 实现类中有四个方法,其中 put get delete 方法是需要暴露给应用程序的,rebuild 方法是需要暴露给系统进行远程调用的。如果将 rebuild 暴露给应用程序,应用程序可能会错误调用 rebuild 方法,导致 cache 服务失效。按照接口隔离原则:不应该强迫客户程序依赖它们不需要的方法。也就是说,应该使 cache 类实现两个接口,一个接口包含 get put delete 暴露给应用程序,一个接口包含 rebuild 暴露给系统远程调用。从而实现接口隔离,使应用程序看不到 rebuild 方法。
解决方案类图:
评论