写点什么

依赖倒置和接口隔离

用户头像
allen
关注
发布于: 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 加入

还未添加个人简介

评论

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