架构师训练营第一期 - week2 - 命题作业

用户头像
谭明华
关注
发布于: 2020 年 09 月 26 日

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

依赖倒置原则的定义:

  • 上层模块不应该依赖于底层模块,它们都应该依赖于抽象。

  • 抽象不应该依赖于实现,而是实现依赖于抽象

意思就是在实现的过程中,我们应该针对某一类抽象进行编程,这样可以方便后续的扩展而不必修改当前的代码.

比如说:

拿鸭子叫的例子来说, 我们需要让鸭子叫,就要调用鸭子的call方法。现在有一个whiteDuck, 让他叫则使用whiteDuck.call(), 如果哪一天我们改成了darkDuck, 则程序需要修改为darkDuck.call()。这样的程序往往是不稳定的,太容易被改变。



而使用依赖倒置原则,抽象出一个Duck, 让whiteDuck\darkDuck都实现Duck, 在声明的时候不指定具体的类型,而是使用抽象类型, 这样在调用的时候, 程序会根据具体的运行过程去执行对应的鸭子叫声。



而好莱坞原则:don't call me. I will call you

可以理解为,A是一个演员, B是一个导演。

A跟B说:我想演戏

B跟A说:我目前也不知道有什么戏,也不知道什么系适合你。所以给我一张你的联系方式。有了我就联系你, 但是你不要联系我。

这就是好莱坞原则.

在某些时候,与依赖倒置原则很像,都是通过顶层向底层分配资源的过程。



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

内容: cache 实现类中有四个方法,其中 put get delete 方法是需要暴露给应用程序的,rebuild 方法是需要暴露给系统进行远程调用的。如果将 rebuild 暴露给应用程序,应用程序可能会错误调用 rebuild 方法,导致 cache 服务失效。按照接口隔离原则:不应该强迫客户程序依赖它们不需要的方法。



优化后的类图:



发布于: 2020 年 09 月 26 日 阅读数: 19
用户头像

谭明华

关注

还未添加个人签名 2019.01.15 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第一期 - week2 - 命题作业