架构师训练营 -W02H- 架构设计
一、请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
依赖倒置原则
高层模块不应该依赖底层模块,二者都应该依赖抽象。
抽象不应该依赖具体实现,具体实现应该依赖抽象
依赖原则也被称为好莱坞原则
Don't call me, I'll call you. 即不要来调用我,我会调用你。
应用程序不要调用框架,而是框架调用应用程序。
二、请描述一个你熟悉的框架,是如何实现依赖倒置原则的。
Scrapy爬虫框架
Scrapy框架
在Scrapy框架中包含ENGINE、SPIDERS、SCHEDULER、DOWNLOADER、ITEM PIPLINES五大组件。在使用时一般只需填充、修改SPIDERS和ITEM PIPLINES组件代码即可。SPIDERS组件主要是用于请求URL以及页面解析方法。ITEM PIPLINES组件主要用于处理后的数据储存,只定义一个存储管道,具体实现可灵活定义为文本、数据库、JSON、EXCEL等。可以看到具体的请求和页面解析都依赖于框架SPIDERS组件,具体的数据存储格式都依赖框架的ITEM PIPLINES组件。
三、请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。
使用接口隔离原则,通过多重继承的方式进行接口隔离。
Cache 实现类 BazaCache(Baza 是当时开发的统一缓存服务的产品名)同时实现 Cache 接口和 CacheManageable 接口,其中 Cache 接口提供标准的 Cache 服务方法,应用程序只需要依赖该接口。而 CacheManageable 接口则对外暴露 reBuild() 方法,使远程配置服务可以通过自己的本地代理调用这个方法,在运行期远程调整缓存服务的配置,使系统无需重新部署就可以热更新。
引自极客时间《后端技术面试38讲》
评论