架构师训练营第二周作业

用户头像
小树林
关注
发布于: 2020 年 06 月 14 日

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

依赖倒置原则(DIP,Dependency Inversion Principle):高层模块不依赖于低层模块,高层和低层都依赖于抽象。抽象不依赖于实现细节,而实现细节依赖于抽象。

个人认为,依赖倒置的核心是:高层很明确知道自己需要哪些功能,但又不想局限于实现细节。于是就把做什么和怎么做进行了分离,把做什么定义为抽象,把怎么做定义为实现。高层只关注抽象而不关注实现。因为高层特别关注抽象并且抽象是为高层服务的,离的比较近,同时抽象一般比较稳定,而实现可以有很多种方式不太稳定,于是就把稳定的抽象放到了高层,然不太稳定的低层实现细节,依赖比较稳定的高层抽象。

好莱坞原则:don't call us, we'll call you。假如我们把视角定位在某个抽象接口的某个具体实现上,那么高层什么时候调用我们这个实现,实现本身是不知道的,甚至调用不调用都不知道。



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

mybatis框架,通过XML编写SQL语句,然后框架解析并运行这些语句,我认为是服务依赖倒置原则的。



上图中,Mapper是定义的接口,SQL XMl配置文件为接口的具体实现,Service依赖于Mapper而不是SQL具体实现,从逻辑上讲,它们的依赖关系倒置了。



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



其中,Cacheable接口是公开接口,其他两个接口为包内可见,客户只需要依赖Cacheable接口就行了,具体实现不用关心

用户头像

小树林

关注

还未添加个人签名 2020.04.07 加入

还未添加个人简介

评论

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