依赖倒置原则 & 类图优化

发布于: 2020 年 06 月 17 日

作业一

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

  • 什么是依赖倒置原则?

传统的程序开发思路是在需要某些功能的时候,会主动调用相应的接口,这样的坏处就会造成主动调用方比较被动。如果依赖方频繁变更会导致已来访频繁修改,这种模式不适合作为架构设计的准则,因为架构应该是稳定的

为了解决架构设计的稳定性问题,引入了依赖倒置策略,框架开发者会开发好完整的框架,定义好框架接口(利用多态),当框架需要某些功能的时候,就直接调用框架定义好的接口,实现框架的启动与运行。依赖倒置的开发思路就由被动转为主动,由“我调用你”转变为“你实现我定义的接口”,这样就发生了依赖倒置

  • 好莱坞原则?

“Do not call us, we will call you”

百度百科:

https://baike.baidu.com/item/%E5%A5%BD%E8%8E%B1%E5%9D%9E%E5%8E%9F%E5%88%99/16019700

这个思路就和依赖倒置原则比较契合,调用发起方(演员)由主动变为被动

总结:

  1. 对基于接口编程的支持

  2. 减少单件和抽象工厂的依赖

  3. 降低业务和框架的耦合

  4. 业务组件可复用,可插拔

 

作业二

请描述一个你熟悉的框架,是如何实现依赖倒置原则的。

框架:JUnit

Junit是一个java的单元测试框架,在便携测试用例的时候,只要遵循JUnit定义的规则,JUnit就能够找到相应的测试类的测试方法并执行,从而完成单元测试。从应用调用关系上来讲,JUnit是一个框架。从依赖倒置原则来解释,就是所有的单元测试编写人员并不关注框架是怎么run起来的,只需要填写自己的业务逻辑(测试逻辑)就行。

从表现形式来讲,Junit定义了如下一些注解:

其中在实际的开发过程中使用比较频繁的有@Test,@Before,@BeforeClass,@After,@AfterClass,@FixMethodOrder 等

以@Test注解为例

Test为抽象接口,测试用例通过依赖抽象接口事项依赖倒置

作业三

请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。

作业三提示:cache 实现类中有四个方法,其中 put get delete 方法是需要暴露给应用程序的,rebuild 方法是需要暴露给系统进行远程调用的。如果将 rebuild 暴露给应用程序,应用程序可能会错误调用 rebuild 方法,导致 cache 服务失效。按照接口隔离原则:不应该强迫客户程序依赖它们不需要的方法。也就是说,应该使 cache 类实现两个接口,一个接口包含 get put delete 暴露给应用程序,一个接口包含 rebuild 暴露给系统远程调用。从而实现接口隔离,使应用程序看不到 rebuild 方法。

l  类图:

用户头像

lei Shi

关注

还未添加个人签名 2018.05.24 加入

还未添加个人简介

评论

发布
暂无评论
依赖倒置原则 & 类图优化