架构学习(二)作业

发布于: 2020 年 06 月 17 日

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

依赖倒置原则的本质就是通过抽象(接口或抽象类)使各个类或模块的实现彼此独立,不互相影响,实现模块间的松耦合。我们在项目中使用这个原则要遵循下面的规则:

每个类尽量都有接口或者抽象类,或者抽象类和接口两都具备

变量的表面类型尽量是接口或者抽象类

任何类都不应该从具体类派生

尽量不要覆写基类的方法 

如果基类是一个抽象类,而这个方法已经实现了,子类尽量不要覆写。类间依赖的是抽象,覆写了抽象方法,对依赖的稳定性会有一定的影响。

结合里氏替换原则使用 

里氏替换原则:父类出现的地方子类就能出现。结合本章我们得出了一个通俗的规则:接口负责定义public属性和方法,并且声明与其他对象的依赖关系。抽象类负责公共构造部分的实现,实现类准确的实现业务逻辑,同时在适当的时候对父类进行细化。

对于为什么有时候依赖倒置原则又被称为好莱坞原则,好莱坞原则的口号是:don’t call me ,i will call you。你不要调用我,我会调用你,你只要实现我定义的抽象类或接口就可以了,我的理解是依赖倒置原则里一直强调的是依赖的是抽象,同样是定义好了抽象类或接口,你只要实现我定义的抽象就好了,我不管你是怎么实现,我只管调用你。比如Controller中依赖接口IController定义了方法和参数,那么Service层实现这个接口的方法就可以了,主要的逻辑处理在Service层,与Dao层交互,Dao层不管你怎么变,Controller层都不用修改,Service层只管实现就好,Controller层我只管调用。

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

ThinkPHP5.1 框架中的路由以及中间件

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

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

原始类图

接口隔离原则优化

用户头像

漫步跑小鸡

关注

还未添加个人签名 2018.11.17 加入

还未添加个人简介

评论

发布
暂无评论
架构学习(二)作业