Week2 课后作业
作业一
依赖倒置原则:
1.高层模块不应该依赖底层模块,它们都应该依赖于抽象
2.抽象不应该依赖于实现,而是实现应该依赖于抽象
好莱坞原则的意思是:
Don't call me,I'll call you.
这个同依赖倒置原则相似,如框架的依赖倒转原则是:框架调用应用程序,应用程序不需要调用框架。
依赖倒置原则也是我(如框架)去调用你而不是你(如应用程序)来调用我。
作业二:
对依赖倒置原则的理解:
比如:以 Java Web 应用举例,用户请求在到达服务器以后,最先处理用户请求的是 Java Web 容器Tomcat,通过监听 80 端口,把 HTTP 封装成 Request 对象; 然后是 Spring MVC 框架,把 Request 对象里的用户参数提取出来,根据请求的 URL 分发给相应的 Model 对象处理; 再然后就是我们的应用程序,负责处理用户请求,具体来看,还会分成服务层、数据持久层等。
在这个例子中,Tomcat 相对于 Spring MVC 就是高层模块,Spring MVC 相对于我们的应用程序也算是高层模块。 Tomcat 会调用 Spring MVC,但是 Tomcat 并没有依赖 Spring MVC。Tomcat 如何做到不依赖 Spring MVC,却可以调用 Spring MVC?就是因为 Tomcat 和 Spring MVC 都依赖 J2EE 规范,Spring MVC 实现了 J2EE 规范的 HttpServlet 抽象类,即 DispatcherServlet,并配置在 web.xml 中。这样,Tomcat 就可以调用 DispatcherServlet 处理用户发来的请求。 同样 Spring MVC 也不需要依赖我们写的 Java 代码,而是通过依赖 Spring MVC 的配置文件或者 Annotation 这样的抽象,来调用我们的 Java 代码。所以,Tomcat 或者 Spring MVC 都可以称作是框架,它们都遵循依赖倒转原则。
作业三:
用接口隔离原则优化 Cache 类的设计:
按照接口隔离原则:不应该强迫客户程序依赖它们不需要的方法。也就是说,应该使 cache 类实现两个接口,一个接口包含 get put delete 暴露给应用程序,一个接口包含 rebuild 暴露给系统远程调用。从而实现接口隔离,使应用程序看不到 rebuild 方法。
评论