第二周作业
作业一:
请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
依赖倒置原则是设计模式六大原则中的一大原则,它的定义:高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
如何理解: 模块与模块之间的依赖是通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的。
举个例子: 司机驾驶宝马,张三驾驶奔驰
面向过程的做法
随着后面不同人驾驶不同的车,程序只会变成越来越臃肿,越来越难维护。
按照依赖倒置原则设计,我们可以把场景抽象为, 驾驶员驾驶车,也就是驾驶员IDriver依赖于车ICar,所有的驾驶员实现IDriver,所有车实现ICar即可,以后不管什么人驾驶什么车, 增加新的实现即可,无需改动原来的代码。
至于依赖倒置原则为什么又被称为好莱坞原则?
好莱坞原则是不要给我们打电话,我们会给你打电话。那么按照系统设计角度去理解,"你"是高层组件, “我们”(好莱坞)是底层组件,高层组件不应该直接调用底层组件,让底层组件去调用高层组件。
这个概念正好符合依赖倒置原则中, 高层模块不应该依赖底层模块,细节应该依赖抽象。
作业二:
请描述一个你熟悉的框架,是如何实现依赖倒置原则的。
以当前在用php 框架Lavarel 为例,它是以MC的软件架构模式设计的,其中用户数据提供者的数据库连接这块就按照依赖倒置原则设计的。用户数据提供者调用底层连接接口,各种数据库连接实现底层连接接口,那么用户数据提供者不管数据连接是Mysql,还是Sql server都无需变动调用代码。
下面是代码实例:
DatabaseUserProvider.php
ConnectionInterface.php
Connection.php
作业三:
请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。
如图
版权声明: 本文为 InfoQ 作者【洋】的原创文章。
原文链接:【http://xie.infoq.cn/article/a5b49111064294754d6dbad25】。文章转载请联系作者。
评论