架构师训练营 -W02H- 架构设计

发布于: 2020 年 06 月 17 日

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

依赖倒置原则

  • 高层模块不应该依赖底层模块,二者都应该依赖抽象。

  • 抽象不应该依赖具体实现,具体实现应该依赖抽象

依赖原则也被称为好莱坞原则

  • 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讲》

用户头像

BlazeLuLu

关注

还未添加个人签名 2018.05.30 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营-W02H-架构设计