写点什么

第二周作业

用户头像
武鹏
关注
发布于: 2020 年 06 月 16 日
  1. 请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?

依赖倒置原则(Dependence Inversion Principle):  

  1、高层模块不应该依赖底层模块,二者都应该依赖抽象。

  2、抽象不应该依赖细节,细节应该依赖抽象。

  3、依赖倒置的中心思想是面向接口编程。

  4、依赖倒置原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础搭建的架构要稳定的多。

  5、使用接口或抽象类的目的是指定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类来完成。

举例说明: 司机驾驶奔驰



以上代码也算是完成了任务或者基本需求,现在又来新需求了,张三不仅要开奔驰车,还要开宝马车,又该怎么办呢? 进行依赖倒置,使得类都依赖接口,设计如下

  1. 什么是好莱坞原则?

好莱坞原则:别调用我们,我们会调用你

作用:防止“依赖腐败”

解释:在好莱坞原则之下,我们允许低层组件将自己挂钩到系统上,但是高层组件会决定什么时候和怎样使用这些低层组件。换句话说,高层组件对待低层组件的方式是“别调用我们,我们会调用你”

  1. 好莱坞原则和模板方法

当我们设计模板方法模式时,我们告诉子类,“不要调用我们,我们会调用你”。

还有一些模式也采用了好莱坞原则:工厂方法模式、观察者模式等

  1. 好莱坞原则和依赖倒置原则之间关系如何?

依赖倒置原则教我们尽量避免使用具体类,而多使用抽象。

而好莱坞原则是用在创建框架或组件上的一种技巧,好让低层组件能够被挂钩进计算中,而且又不会让高层组件依赖低层组件。两这个的目标都是在于解耦,但是依赖倒置原则更加注重如何在设计中避免依赖。

好莱坞原则教我们一个技巧,创建一个有弹性的设计,允许低层结构能够互相操作,而又防止其他类太过依赖它们。



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

Spring的核心IOC,其实本质上就是一个容器,而这个容器里面都是管理的一个个JAVA类,和本质上是面向接口编程的依赖倒置思想扯不上什么直接关系。但为什么笔者明明知道这个结论一眼下去看似是错的还要这样说喃?其实之所以说Spring是依赖倒置思想的落地实现是因为Spring的核心——IOC,就是在整个思想落地实现过程中为了解决某些问题而设计出来的一个组件。



虽然Spring的设计理念和依赖倒置思想没有直接关系,但是确实是因为有了依赖倒置思想的落地实现过程才诞生了Spring!!!其实真正和依赖倒置思想面向接口解耦这一逻辑直接相关的是现在Spring体系中常用的分层逻辑——controller、service+Impl、Mapper(如果是其他持久化框架,此处就是其他类型的dao,此处以mapper为例)。



做过spring体系开发的读者应该很快就能理解到笔者上面说的话,controller、service+Impl、Mapper层层之间的依赖关系是严格按照依赖倒置思想来落地实现的。



  1. 设计缓存类Cache



用户头像

武鹏

关注

还未添加个人签名 2020.04.23 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
请完善下标题和标签
2020 年 06 月 16 日 10:28
回复
没有更多了
第二周作业