写点什么

架构师训练营——第二周作业

用户头像
关注
发布于: 2021 年 01 月 07 日

Question-1

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

Answer-1

依赖倒置原则,是指高层模块不能依赖低层模块,而是大家都依赖一个接口。抽象不能依赖实现,而是实现依赖抽象。它倒置了模块和包的依赖关系,也倒置了开发的顺序和职责。基于依赖倒置原则,我们开发的顺序是:

  1. 首先定义一个抽象(接口),该抽象属于高层模块;

  2. 高层模块不依赖低层模块,而是依赖该抽象;

  3. 低层模块实现该抽象;

  4. 开发顺序是高层模块先定义抽象,然后由低层模块去实现,而不是基于低层模块的实现再去定义抽象。

依赖倒置原则是很多开发框架的理论基础。

依赖倒置原则又被称为好莱坞原则,我个人的理解:

  • 演艺公司属于高层模块。

  • 演员属于低层模块。

  • 高层模块和底层模块之间不互相依赖:演员将简历提交给演艺公司后,交互过程就结束了,演员可以继续给其他公司提交简历,公司也可以继续招聘其他演员,二者不会互相影响。

  • 好莱坞的招聘规则,可以理解为一个契约,一个抽象,演艺公司和演员都依赖于这个契约。

Question-2

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

  • 提示:cache 实现类中有四个方法,其中 put get delete 方法是需要暴露给应用程序的,rebuild 方法是需要暴露给系统进行远程调用的。如果将 rebuild 暴露给应用程序,应用程序可能会错误调用 rebuild 方法,导致 cache 服务失效。按照接口隔离原则:不应该强迫客户程序依赖它们不需要的方法。也就是说,应该使 cache 类实现两个接口,一个接口包含 get put delete 暴露给应用程序,一个接口包含 rebuild 暴露给系统远程调用。从而实现接口隔离,使应用程序看不到 rebuild 方法。

Answer-2

优化后 UML 图:

优化后客户端代码:

Cache cache = new RebuildableCache();Object cache.get("key");
复制代码


用户头像

关注

还未添加个人签名 2018.07.18 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营——第二周作业