架构师训练营——设计模式篇 _ 作业
️week02 命题作业
请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
请描述一个你熟悉的框架,是如何实现依赖倒置原则的
请用接口隔离原则优化 Cache 类的设计,画出优化后的类图
一、请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
描述:
1、高层模块不能依赖低层模块,而是大家都依赖于抽象
2、抽象不能依赖实现,而是实现依赖抽象
举例:
高层模块 service,低层模块 DAO,service 插入数据不依赖 DAO,而是制定接口 Repository.save();DAO 去实现这个接口

为什么有时候又称为好莱坞原则呢?
因为电影里常有谍战剧情“Don't call me ,I will call you"
间谍上下级互相联系时,为了避免暴露上级,所以仅提供单向依赖,上级适当时间联系下级,下级不可以联系上级。
二、请描述一个你熟悉的框架,是如何实现依赖倒置原则的
Spring 使用依赖注入,在运行时注入对应的实例,而不在编码时绑定,实现了依赖倒置
JDBC 使用桥接模式,在运行时设定数据库驱动,实现了依赖倒置

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

使用接口隔离原则,避免客户端同时拥有 rebuild 方法,操作误操作的风险。
类图如下,暴露给客户端的只有 put,get,delete 方法,屏蔽 rebuild 方法

版权声明: 本文为 InfoQ 作者【独孤魂】的原创文章。
原文链接:【http://xie.infoq.cn/article/208367c355ecfd80c9ec1a1ba】。未经作者许可,禁止转载。
评论