写点什么

<<架构师训练营>> 第二周作业

用户头像
0x12FD16B
关注
发布于: 2020 年 06 月 17 日
<<架构师训练营>> 第二周作业

作业一

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

依赖倒置原则的原文:

High-level modules shouldn’t depend on low-level modules. Both modules should depend on abstractions. In addition, abstractions shouldn’t depend on details. Details depend on abstractions.



高层模块(high-level modules)不要依赖低层模块(low-level)。高层模块和低层模块应该通过抽象(abstractions)来互相依赖。除此之外,抽象(abstractions)不要依赖具体实现细节(details),具体实现细节(details)依赖抽象(abstractions)。



所谓高层模块和低层模块的划分,简单来说就是,在调用链上,调用者属于高层,被调用者属于低层。

实际上,这条原则主要还是用来指导框架层面的设计。在平时的业务代码开发中,高层模块依赖底层模块是没有任何问题的。



好莱坞原则: 别调用我们,我们会调用你,作用:防止 "依赖腐败"。

解释:在好莱坞原则之下,我们允许低层组件将自己挂钩到系统上,但是高层组件会决定什么时候和怎样使用这些低层组件。换句话说,高层组件对待低层组件的方式是 "别调用我们,我们会调用你"。

依赖倒置原则教我们尽量避免使用具体类,而多使用抽象;而好莱坞原则是用在创建框架或组件上的一种技巧,好让低层组件能够被挂钩进计算中,而且又不会让高层组件依赖低层组件。两这个的目标都是在于解耦,但是依赖倒置原则更加注重如何在设计中避免依赖。好莱坞原则教我们一个技巧,创建一个有弹性的设计,允许低层结构能够互相操作,而又防止其他类太过依赖它们。

作业二

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

拿 Tomcat 和运行在 Tomcat 中的 Java Web 应用程序举例。Tomcat 是运行 Java Web 应用程序的容器。我们编写的 Java Web 应用程序代码只需要打包好之后部署在 Tomcat 容器下,便可以被 Tomcat 容器调用执行。按照之依赖倒置原则的划分,Tomcat 就是高层模块,我们编写的 Web 应用程序代码就是低层模块。Tomcat 和应用程序代码之间并没有直接的依赖关系,两者都依赖同一个 "抽象",也就是 Servlet 规范。Servlet 规范不依赖具体的 Tomcat 容器和应用程序的实现细节,而 Tomcat 容器和应用程序依赖 Servlet 规范。

作业三

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



优化后的类图:

使用接口隔离原则, 需要使用 reBuild 方法的使用 CacheBuilder 进行调用。

需要使用缓存操作的使用 CacheOperation 进行调用。

用户头像

0x12FD16B

关注

还未添加个人签名 2018.01.19 加入

还未添加个人简介

评论

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