架构师训练营——第二周作业
Question-1
请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
Answer-1
依赖倒置原则,是指高层模块不能依赖低层模块,而是大家都依赖一个接口。抽象不能依赖实现,而是实现依赖抽象。它倒置了模块和包的依赖关系,也倒置了开发的顺序和职责。基于依赖倒置原则,我们开发的顺序是:
首先定义一个抽象(接口),该抽象属于高层模块;
高层模块不依赖低层模块,而是依赖该抽象;
低层模块实现该抽象;
开发顺序是高层模块先定义抽象,然后由低层模块去实现,而不是基于低层模块的实现再去定义抽象。
依赖倒置原则是很多开发框架的理论基础。
依赖倒置原则又被称为好莱坞原则,我个人的理解:
演艺公司属于高层模块。
演员属于低层模块。
高层模块和底层模块之间不互相依赖:演员将简历提交给演艺公司后,交互过程就结束了,演员可以继续给其他公司提交简历,公司也可以继续招聘其他演员,二者不会互相影响。
好莱坞的招聘规则,可以理解为一个契约,一个抽象,演艺公司和演员都依赖于这个契约。
Question-2
请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。
提示:cache 实现类中有四个方法,其中 put get delete 方法是需要暴露给应用程序的,rebuild 方法是需要暴露给系统进行远程调用的。如果将 rebuild 暴露给应用程序,应用程序可能会错误调用 rebuild 方法,导致 cache 服务失效。按照接口隔离原则:不应该强迫客户程序依赖它们不需要的方法。也就是说,应该使 cache 类实现两个接口,一个接口包含 get put delete 暴露给应用程序,一个接口包含 rebuild 暴露给系统远程调用。从而实现接口隔离,使应用程序看不到 rebuild 方法。
Answer-2
优化后 UML 图:
优化后客户端代码:
评论