第二周作业
作业一、请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
依赖倒置( Dependency inversion principle)的原则:
1.高级模块不应当依赖于低级模块。它们都应当依赖于抽象。
2.抽象不应当依赖于实现,实现应当依赖于抽象。
依赖倒置,倒置的内容:
1.模块和包的依赖关系
2.开发顺序和职责
应用依赖倒置的软件层次化:
1.高层决定低层(高层定义接口)
2.高层被重用
好莱坞原则:Don't call me, I will call you.
在倒置的依赖中,高层模块会调用自己定义的接口,而低层模块会实现高层的定义,从而实现依赖的倒置。
软件设计模式中,策略模式是典型的依赖倒置。
在日常开发中,经常使用框架开发,当我们的业务逻辑运行在框架中,并没有显示调用框架,这也是符合依赖倒置的原则。
作业二、请描述一个你熟悉的框架,是如何实现依赖倒置原则的。
Spring validation(验证)中就有典型的依赖倒置原则设计:
其中Spring框架源码部分:
1.org.springframework.validation.ValidationUtils
2.org.springframework.validation.Validator
UserValidator、HarmlessHandleValidator 分别为两个行为策略,实现不同的算法。
前要条件User:
UserValidator:
HarmlessHandleValidator类似于UserValidator可以定义一些其他的规则。
Spring MVC中的media处理、Spring Freamwork中Aware等也有许多类似这样的例子,有的提供默认的策略支撑,有的则是给用户定制支撑,都是利用了依赖倒置的原则和特性。
另外Servlet容器大部分也都是依赖倒置的,我们写自己的servlet的时候要继承或实现容器指定的类、接口信息。
作业三、请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。
类图描述:
第二周总结
面向对象设计(OOD)五大基本原则
SOLID的5原则:
S = 单一职责原则 Single Responsibility Principle
O = 开放闭合原则 Opened Closed Principle
L = Liscov替换原则 Liscov Substitution Principle
I = 接口隔离原则 Interface Segregation Principle
D = 依赖倒置原则 Dependency Inversion Principle
版权声明: 本文为 InfoQ 作者【Geek_2b3614】的原创文章。
原文链接:【http://xie.infoq.cn/article/4e49e25072c69e080d4b0ba25】。未经作者许可,禁止转载。
评论