依赖倒置和接口隔离

发布于: 2020 年 06 月 17 日

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

  • 依赖倒置原则

  • 上层模块不应该依赖底层模块,应依赖于抽象。

  • 抽象不应该依赖于细节,细节应该依赖于抽象。

  • 好莱坞原则:don't call us, we'll call you

  • 别调用我们,我们会调用你。

  • 高层组件不应该直接调用底层组件,而是从容器获取。

  • 应用:模板方法模式,模板方法类对它的子类说: 不要调用我们,我们会调用你。

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

  • web容器规范:tomcat、jetty、weblogic等都遵循web容器规范,应用程序中必须包含WEB-INF目录,web.xml文件等。

  • servlet规范:应用实现Servlet接口就能处理响应的web请求。

  • jdbc规范:mysq、oracle连接数据库驱动都是面向jdbc接口编写。

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

  • put get delete提供给内部应用使用。

  • rebuild 提供给外部管理用,可通过传入conf动态切换是内部缓存还是外部缓存,外部缓存可修改对应的集群地址。

  • cache通过conf知道通过代理知道通过哪个缓存获取数据。

类图如下:

  • RedisCahe、LocalCache为底层缓存的实现。

  • CacheProxy持有一个或者多个cache对象(可保证当前生效的为一个)。

  • Cache本身自己不实现缓存能力,通过CacheProxy可获取当前实现缓存的对象,并通过该对象提供缓存的能力,也可通过reBuild方法切换缓存的实现或重新初始化缓存实现对象(Cache本身也可作为CacheProxy)。

  • CacheServiceImpl提供能力给内部应用使用,CacheManangerImpl提供远程服务来管理相应缓存实例。

用户头像

allen

关注

还未添加个人签名 2019.02.26 加入

还未添加个人简介

评论

发布
暂无评论
依赖倒置和接口隔离