前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手撕设计模式,如何理解依赖倒置原则和好莱坞原则

手撕设计模式,如何理解依赖倒置原则和好莱坞原则

作者头像
kk大数据
发布2020-06-29 15:50:25
9930
发布2020-06-29 15:50:25
举报
文章被收录于专栏:kk大数据kk大数据

一、什么是依赖倒置原则

依赖倒置原则,就是从客户端代码调用框架代码,变成框架调用客户端代码。框架来定义接口,客户端来实现。

(1)高层模块不应该依赖底层模块,二者都应该依赖抽象

(2)抽象不应该依赖细节,细节应该依赖抽象

(3)依赖倒置原则的中心思想是面向接口编程

(4)依赖倒置原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多,以抽象为基础搭建的架构比以细节为基础搭建的架构要稳定的多

二、为什么有时候依赖倒置原则又被称为好莱坞原则?

好莱坞原则:别打电话给我,有事我会打电话给你

好莱坞原则用在系统的高层组件和低层组件之间,低层组件将自己挂钩到系统上,高层组件会来决定什么时候和如何调用低层组件。高层组件对待低层组件的方式是,别来调用我,我会调用你。

好莱坞原则和依赖倒置原则之间还是有所区别的。

依赖倒置原则更多是说,我们应该面向接口编程;好莱坞原则是说,低层组件将自己挂钩到系统上,由系统来主动调用。

三、tomcat 框架如何实现依赖倒置原则的

如图是tomcat处理web请求的流程图,请求会经过 connector,coyote,engine,host,context,Servlet,层层传递最终传递到我们的应用程序里面来。我们只需要把程序发布成war包放在指定的目录下即可使用。

我们的应用程序就是低层组件,底层组件没有去调用tomcat的什么类,而是框架层主动调用应用程序来处理。

这就体现了依赖倒置原则,高层组件来定义接口和规范,底层组件来实现。

四、利用接口隔离原则优化下面的缓存类

如图,希望 reBuild 方法只是给框架调用,客户端不应该调用 reBuild 类,该如何设计

思路如下:

caache 实现类中有四个方法,其中 put get delete 方法是需要暴露给应用程序的,rebuild 方法是需要暴露给系统进行远程调用的。如果将 rebuild 暴露给应用程序,应用程序可能会错误调用 rebuild 方法,导致 cache 服务失效。按照接口隔离原则:不应该强迫客户程序依赖它们不需要的方法。也就是说,应该使 cache 类实现两个接口,一个接口包含 get put delete 暴露给应用程序,一个接口包含 rebuild 暴露给系统远程调用。从而实现接口隔离,使应用程序看不到 rebuild 方法。

那么提供给用户使用的就是 Cache 类,而 CacheManager 类给框架使用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 KK架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是依赖倒置原则
  • 二、为什么有时候依赖倒置原则又被称为好莱坞原则?
  • 三、tomcat 框架如何实现依赖倒置原则的
  • 四、利用接口隔离原则优化下面的缓存类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档