写点什么

依赖倒置原则、接口隔离原则优化类的设计

用户头像
Calvin
关注
发布于: 2020 年 11 月 01 日

极客大学架构师训练营命题作业:


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

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


Cache 类

依赖倒置原则

高层不能依赖底层模块,而是都依于抽象。

抽象不能依赖实现,而是 实现 依赖的抽象。

倒置了那些?

依赖倒置:高层调用开发好的高层定义抽象接口,而底层就实现这些高层抽象出来的接口、从而依赖都是依赖这个接口。

于此同时的非依赖倒置:高层调用底层接口,底层实现这些接口,然而高层模块还是依赖底层模块。虽然没依赖实现,但是依赖底层的接口。

接口要属于高层模块的

软件的层次化

  • 高层决定底层

  • 高层被重用

为什么依赖倒置原则又被称为好莱坞原则?

好莱坞规则:Don't call me, I'll call you

好莱坞原则中的 me 是下层模块

倒转的层次依赖关系

Don`t Call our framework,our framework will call our codes.

这是框架的核心,框架要定义一组接口,框架基于这组接口,进行开发,进行调用。

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

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


Cache 类优化图


抽象两个接口类:

IApplication : 需要暴露给应用程序的。

ISystemCache: 需要暴露给系统进行远程调用的。

Cache 实现类中有四个方法,实现上面两个接口类。


用户头像

Calvin

关注

还未添加个人签名 2019.04.16 加入

还未添加个人简介

评论

发布
暂无评论
依赖倒置原则、接口隔离原则优化类的设计