Week 02 命题作业

用户头像
卧石漾溪
关注
发布于: 2020 年 06 月 15 日

 

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

DIP概念:

依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。

简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

 

DIP要点:

       a.高层模块不应该依赖于低层模块,两者都应该依赖于抽象。

      b.抽象不应该依赖于细节,细节应该依赖于抽象。

 

         一个DIP的简单例子:

                   依赖倒置可以应用于任何存在一个类向另一个类发送消息的地方。

                  



                   采用依赖倒置原则改善的设计如下:

                  



        

         好莱坞原则:don’t call us, we’ll call you 别调用我们,我们会调用你)。

解释:

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

 

         依赖倒置原则和好莱坞原则:

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

        

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

Spring框架中的控制反转(IOC)就是依赖倒置原则(DIP)的具体实现方式。

IOC为高、低层模块之间提供了抽象,就是说在系统中,被依赖对象(底层对象)不在依赖的模块中(高层模块)中直接创建对象,而是把创建对象的权利交给IOC容器来创建,然后再把对象交给依赖的模块使用。

在Spring 中提供的依赖注入(DI),就是IOC的一种重要实现手段,它将依赖的对象的创建权交给外部来处理,而不是在自身new出一个实例。

传递注入的方式有三种:

1、构造注入:利用构造方法进行注入

2、setter方法注入:在需要注入的类里提供一个setter方法进行注入

3、接口注入:因为具有代码侵入性,一般很少用,前2种居多

 

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





用户头像

卧石漾溪

关注

还未添加个人签名 2020.05.04 加入

还未添加个人简介

评论

发布
暂无评论
Week 02 命题作业