第二周作业

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

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

依赖倒置原则的原始定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象(High level modules shouldnot depend upon low level modules.Both should depend upon abstractions.Abstractions should not depend upon details. Details should depend upon abstractions)。其核心思想是:要面向接口编程,不要面向实现编程。



为了遵循该原则,我们在设计或编码时要注意:

  1. 对业务进行抽象,使调用方都是依赖接口,而不是依赖实现类。

  2. 变量的声明类型尽量是接口或者是抽象类。

  3. 任何类都不应该从具体类派生,除非是旧系统维护,要覆盖类的实现。

  4. 使用继承时尽量遵循里氏替换原则。



对于好莱坞原则(Dont call me, I'll call you),我更倾向于与“回调”近义。例如:打车的时候,你告诉司机你的目的地,司机到达目的地会告诉你,而不需要你定时不停问(轮询)司机:“有没有到目的地”。



依赖倒置和好莱坞原则相近的地方应该是:高层提供了一些接口,低层实现了接口。那么就是:低层不要问高层要不要用,高层需要的时候,会通过既定的接口调用低层的对象实例。



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

最熟悉的应该是Spring的Ioc容器,是通过依赖注入的方式实现依赖倒置原则的。通过一个中心容器管理对象,在运行时而非编译时绑定类间关系。

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

问题附图:



答案:

通过拆分接口,但是在一个类中实现的方式。



用户头像

CP

关注

还未添加个人签名 2018.03.15 加入

还未添加个人简介

评论

发布
暂无评论
第二周作业