第二周 框架设计作业
请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
众所周知在进行软件系统开发的时候,一般稍具规模的系统都会进行模块和功能结构的分解和划分,并且还会依赖一些第三方的框架,模块和模块,模块和框架之间通常会存在依赖关系,这种依赖可以分三种方式,一种是直接依赖,高层直接依赖低层模块的实现方法和类,这样做法耦合性十分高,一旦低层模块发生变更,影响代码修改的范围比较大;一种是依赖接口,这个接口是由低层模块定义的,高层模块依赖低层模块定义的接口,只要低层模块的接口不发生变更,对高层模块的调用代码不会有影响,通常来说高层模块更了解自己的职责和逻辑,所以这种由别人定义接口这种方式比较被动(比如工作中某人负责的工作当然他自己最了解的,需要配合的时候当然是他提出要求让别人照着去做比较合理一点,让别人提要求是不是不太合乎逻辑,这里的要求可以理解成接口);一种就是也是依赖接口,这个接口是由高层模块定义,让低层模块去实现,接口由更了解自身职责和逻辑的人去定义,实现交给低层模块,这里高层依赖自己定义的抽象接口让低层模块去实现就是所谓的依赖倒置(相比高层直接依低层模块的实现或抽象接口而言)。在一些Web容器(比如Tomcat)和框架(比如Spring),这些框架会声明很多接口,我们业务代码通常去实现这些接口来实现我们自己的业务场景,系统运行起来后这些容器和框架会自动调用这些接口的实现,所以依赖倒置原则又被称为好莱坞原则,就是那句好莱坞的经典名言Don't call me,I'll call you,有异曲同工之妙
其实我们在开发配合中就存在一种场景,就是比如移动端依赖后端的服务接口,那这个服务端接口应该由谁来定义呢?依据这个原则,似乎由移动端来定义服务接口,后端去实现接口更加合理,因为移动端开发人员更加了解自己所实现端的需求和应用场景。
2. 请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。
评论