第二周作业
作业一:
请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
答:依赖倒置原则定义为高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。核心思想是:要面向接口编程,不要面向实现编程。
依赖倒置原则的作用
降低类间的耦合性
提高系统的稳定性
减少并行开发引起的风险
提高代码的可读性和可维护性
好莱坞原则是子类尽量不要调用超类(父类)的方法,而依赖倒置是面向接口或者抽象类编程,从软件设计角度看,好莱坞原则本质也是一种依赖倒置,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 类的设计,画出优化后的类图。
评论