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

发布于: 2020 年 06 月 16 日

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

依赖倒置原则(Dependence Inversion Principle,DIP): High level modules should not depend upon low level modules.Both should depend upon abstractions.Abstractions should not depend upon details.Details should depend upon abstractions.

翻译过来,包含三层含义:

● 高层模块不应该依赖低层模块,两者都应该依赖其抽象;

● 抽象不应该依赖细节;

● 细节应该依赖抽象。

依赖倒置原则在Java语言中的表现就是:

● 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的;

● 接口或抽象类不依赖于实现类;

● 实现类依赖接口或抽象类。

更加精简的定义就是“面向接口编程”——OOD(Object-Oriented Design,面向对象设

计)的精髓之一。

  • 为什么依赖倒置原则又被称为好莱坞原则?

好莱坞原则:"不要给我们打电话,我们会给你打电话(don't call us, we'll call you)"

就是说在好莱坞,想进入好莱坞的人,不要找好莱坞,让好莱坞来找你! 把zhi简历递交给演艺公司后就只dao有回家等待。由演艺公司对整个娱乐项的完全控制,演员只能被动式的接受公司的差使,在需要的环节中,完成自己的演出。

依赖倒置原则中高层模块和底层模块就想好莱坞与演员一样,底层模块只需要实现高层模块的定义接口,被动的等待高层模块来调用接口的实现代码

2 请描述一个你熟悉的框架,是如何实现依赖倒置原则的?

spring框架通过依赖自动注入实现依赖倒置原则的

在没有spring框架的web项目中, 需要在Controller类中主动创建service的具体对象,这样就产生了Controller层依赖service层,高层依赖于低层。而spring的IOC容器,可以自动注入依赖,这就使得Controller不需要依赖某个具体的service实现类,仅仅依赖service接口,IOC容器在Controller初始化的时候自动注入Service的某个实现。达到了Controller层与Service层的解耦。

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

优化后类图如下:

用户头像

zcj

关注

还未添加个人签名 2019.10.12 加入

还未添加个人简介

评论

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