第二周作业

用户头像
Geek_2b3614
关注
发布于: 2020 年 06 月 17 日

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



依赖倒置( 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



发布于: 2020 年 06 月 17 日 阅读数: 37
用户头像

Geek_2b3614

关注

还未添加个人签名 2019.05.09 加入

还未添加个人简介

评论

发布
暂无评论
第二周作业