依赖倒置原则、接口隔离原则优化类的设计
极客大学架构师训练营命题作业:
请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
请用接口隔离原则优化 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 方法。
抽象两个接口类:
IApplication : 需要暴露给应用程序的。
ISystemCache: 需要暴露给系统进行远程调用的。
Cache 实现类中有四个方法,实现上面两个接口类。
评论