架构 week2 homework

用户头像
蜡笔小晗
关注
发布于: 2020 年 06 月 17 日



作业一:

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



依赖倒置原则(Dependency Inversion Principle), 简称DIP,包含在SOLID法则中,由Robert C. Martin在他的文章Design Principles and Design Patterns中提出。最早期的解释是

“Depend upon Abstractions. Do not depend upon concretions”

该原理的基本思想:提供复杂逻辑的高级模块应易于重用,并且不受提供实用程序功能的低级模块的更改的影响。为此,您需要引入一个抽象,该抽象将高级模块和低级模块彼此分离。

基于此思想,Robert C. Martin对依赖倒置原则的定义包括两个部分:

  1. 高级模块不应依赖于低级模块。两者都应依赖抽象。

  2. 抽象不应依赖细节。细节应取决于抽象。



好莱坞原则原则

HollywoodPrinciple is often called InversionOfControl, or DependencyInjection. You can think of it as a special case of TellDontAsk, involving the creation and connection between classes.

The HollywoodPrinciple is where an object's (or component's) initial condition and ongoing lifecycle is handled by its environment rather than by the object itself.

比如将依赖的类在外部创建好之后,通过构造或者入参等方式传递(或注入)给类使用。(DI)

再比如基于框架开发,依赖类的生命周期,工作流程交给框架,而不是工程师。(IOC)



两者关系

依赖倒置原则让我们尽量避免使用具体类,而多使用抽象。而好莱坞原则是用在创建框架或组件上的一种技巧,好让低层组件能够被挂钩进计算中,而且又不会让高层组件依赖低层组件。这两个原则的目标都是在于解耦,但依赖倒置原则更加注重如何在设计中避免依赖;好莱坞原则教我们一个技巧,创建一个有弹性的设计,允许低层结构能够互相操作,而又防止其他类太过依赖它们。层次关系如下:

https://www.slideshare.net/DaoQuangAnh/dependency-inversion-66745196



作业二:

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



比如android HAL,上层业务基于HAL接口抽象实现业务逻辑,不依赖于具体硬件;各大厂家基于HAL层实现硬件逻辑,通过CTS、VTS等保证HAL层实现的完整性、兼容性、稳定性、安全性、性能等。



作业三:

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





用户头像

蜡笔小晗

关注

还未添加个人签名 2020.03.19 加入

还未添加个人简介

评论

发布
暂无评论
架构week2 homework