第二周作业课后作业
作业一:
请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
依赖倒置原则内容是:高层不依赖低层,两者都依赖抽象;抽象不依赖实现,实现应依赖抽象。
个人以java语言来理解是:
1、一段代码逻辑中实体类A调用实体类B,采用依赖倒置原则是:高层A(抽象或实体类,建议为抽象)定义自己需要的接口a(接口类或抽象类),低层实体类B实现/继承该接口a, 然后高层A调用接口a。
2、抽象可以用接口类或抽象类表现。而实现就是具体的实体类。
个人认为“依赖倒置”从字面上看是一个很难理解和记忆的词语。也许是因为个人一开始并不清楚“依赖正向”是什么。查看了Bob大叔的《架构整洁之道》之后,才知道“正向”可以理解为控制流的方法,A调用B即A流向B。而“倒置”指的是代码依赖方向,B实现A定义的接口即B依赖A。
有时候依赖倒置原则又叫好莱坞原则,个人理解是在框架设计这个场景下。但依赖倒置不仅仅可以用在框架设计这个场景,在业务系统中也会经常用到,因为它是解耦的手段之一。
作业二:
请描述一个你熟悉的框架,是如何实现依赖倒置原则的。
JUnit框架
使用JUnit框架编写测试用例,开发者只需写测试业务代码即可,不需关心其是如何被调用的,完全是好莱坞原则。
在JUnit4之前,每个测试类都需要继承TestCase类。TestCase类就是框架高层策略定义的一个抽象。虽然在细节上还有更多要求:方法名必须以“test”为前缀, 必须返回void, 而且必须没有任何参数(例如 public void testDivide()),不遵循这个命名约定的测试方法将被JUnit框架忽略, 而且不抛出任何异常。
在JUnit4之后,使用注解@Test、@Before、@After等即可。但背后的原理是一样。
作业三:
请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。
版权声明: 本文为 InfoQ 作者【iHai】的原创文章。
原文链接:【http://xie.infoq.cn/article/2e2d756e730f5e84858bea86a】。文章转载请联系作者。
评论