写点什么

第二周作业

用户头像
重新来过
关注
发布于: 2020 年 06 月 17 日

作业一:

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

答:依赖倒置原则定义为高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。核心思想是:要面向接口编程,不要面向实现编程。

依赖倒置原则的作用

  • 降低类间的耦合性

  • 提高系统的稳定性

  • 减少并行开发引起的风险

  • 提高代码的可读性和可维护性


好莱坞原则是子类尽量不要调用超类(父类)的方法,而依赖倒置是面向接口或者抽象类编程,从软件设计角度看,好莱坞原则本质也是一种依赖倒置,Don't call me, I'll call you. 但是它并没有约定要求是依赖抽象和依赖接口,所以依赖倒置原则的约束范围要大于好莱坞原则。


作业二:

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

答:PHP 的 web 开发框架 Yii2 中就有使用 DIP 来实现, Yii2 通过 IoC 方法实现了 DIP 的应用,

IoC 的核心是将类(上层)所依赖的单元(下层)的实例化过程交由第三方来实现。

一个简单的特征,就是类中不对所依赖的单元有具体 new 语句

$component = new yii\component\SomeClass() 

而是通过 DI 和 Ioc 来实现组件的实例化和获取,这样在底层实现的时候就不会考虑具体的实现类,而是依赖的抽象接口和抽象类, 得到的好处是:

  • 开发中不用考虑具体的应用类,只需要考虑组件接口就可以

  • 在代码的升级迭代中方便的替换具体的实现来升级功能

代码实现:

https://github.com/yiisoft/yii2/blob/master/framework/di/Container.php


作业三:

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



用户头像

重新来过

关注

还未添加个人签名 2018.09.26 加入

还未添加个人简介

评论

发布
暂无评论
第二周作业