写点什么

架构师训练营 week2

用户头像
devfan
关注
发布于: 2020 年 06 月 16 日

作业一:

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



依赖倒置原则: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)。其核心思想是:要面向接口编程,不要面向实现编程。



依赖倒置原则是实现开闭原则的重要途径之一,它降低了客户与实现模块之间的耦合。



著名的好莱坞原则:不要给我们打电话,我们会给你打电话(don‘t call us, we‘ll call you)。在好莱坞,把简历递交给演艺公司后就只有回家等待。由演艺公司对整个娱乐项的完全控制,演员只能被动式的接受公司的差使,在需要的环节中,完成自己的演出。



Tomcat、Spring 都是基于这个原则设计出来的,应用程序不需要调用Tomcat或者Spring这样的框架,而是框架调用应用程序。而实现这一特性的前提就是应用程序必须实现框架的接口规范,比如实现Servlet接口。



如下的顾客购物的例子,顾客(Customer)只是依赖网点接口(Shop), 接口定义中不需关心是具体哪个网店。因此顾客类 Customer 不管访问什么商店,或者增加新的商店,都不需要修改原有代码。





作业二:

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



框架提供框架核心功能,比如HTTP处理,MVC等,并提供一组接口规范,应用程序只需要遵循接口规范编程,就可以被框架调用。程序使用框架的功能,但是不调用框架的代码,而是实现框架的接口,被框架调用,从而框架有更高的可复用性,被应用于各种软件开发中。



在写Web应用时,肯定会引入类似Tomcat, Jetty等容器运行服务,只要我们实现了Servlet接口,当我们通过访问Tomcat、Jetty等发布的功能时,容器Servlet即可访问到我们实现的功能Servlet。因为Servlet容器是高层模块,Servlet、Filter是高层模块的抽象接口,开发者是低层模块依赖高层抽象接口(Servlet、Filter)。



作业三:

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

考虑到不同需求方的调用情况及避免胖接口的设计,我们对Cache接口进行拆分设计





用户头像

devfan

关注

还未添加个人签名 2017.11.12 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
好莱坞原则的定义可以思考一下
2020 年 06 月 21 日 09:35
回复
没有更多了
架构师训练营 week2