第 2 周作业

用户头像
sunpengjian
关注
发布于: 2020 年 06 月 17 日

作业一

题目:

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

答案:

依赖倒置原则,简称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.

DIP要求针对抽象编程,而不是针对实现编程,这是减少模块之间的依赖关系,构建松耦合的系统,产生可复用的面向对象设计的基本原则。

抽象指的是接口或者抽象类,高层模块抽象低层模块的服务,依赖抽象编程,而不是直接依赖低层模块,低层模块根据高层模块定义的抽象实现具体的细节,可以极大地减少模块之间的依赖关系。分层架构图如下所示:



好莱坞原则指的是don't call us,we will call you。它的含义是高层模块掌握应用的控制权,低层模块不要直接调用高层模块,高层模块负责调用低层模块。框架都是遵守好莱坞原则的,框架是应用的主体,我们遵守框架的约束,编写程序,这些程序由框架来调用。

这与DIP高层模块掌握主动权的原理是一样的,所以DIP有时候也被称为好莱坞原则。



作业二

题目:

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

答案:

一、springframework的生命周期回调机制

通过InitializingBean、DisposableBean、SmartLifeCycle等接口,我们可以自定义bean的初始化回调、bean的销毁回调、application context容器的启动或停止回调,这些接口是spring framework定义的,作为使用方,我们在程序中定义接口的实现,在容器启动时,会通过它内部的LifeCycleProcessor回调我们自定义的实现类。这符合面向抽象编程的原则,高层模块spring framework定义接口,低层模块(我们的程序)实现接口,两者都依赖接口,没有直接的依赖关系。



二、slf4j日志框架

日志使用方是高层模块,依赖slf4j框架中定义的接口,不依赖底层的日志实现框架(低层模块),只要日志实现框架实现了slf4j的接口,就可以被日志使用方使用,日志使用方可以方便地切换日志实现框架。



三、jdbc

jdbc封装了通过操作关系型数据库的接口,应用程序依赖jdbc接口编程,关系型数据库提供jdbc的驱动实现,两者都依赖jdbc,它们之间没有依赖关系。应用程序是高层模块,数据库驱动是低层模块。



作业三:



题目:

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



答案:





用户头像

sunpengjian

关注

还未添加个人签名 2020.01.16 加入

还未添加个人简介

评论

发布
暂无评论
第2周作业