架构师训练营作业 (第二周)
作业一
请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被成为好莱坞原则?
依赖倒置原则:
高层模块不应该依赖低层模块,两者都应该依赖与抽象
抽象不应该依赖与细节
细节应该依赖抽象
更加精简的定义:面向接口编程
高层模块和低层模块容易理解,每一个逻辑的实现都是有原子逻辑组成的,不可分割的原子逻辑就是低层模块,原子逻辑的再组装就是高层模块。
抽象是指接口或抽象类
细节就是实现类,实现接口或继承抽象类而产生的类就是细节。
好莱坞原则:不要给我打电话,我会通知你们。
作业二
请描述一个你熟悉的框架,是如何实现依赖倒置原则的?
控制反转是Spring框架的核心。控制反转是依赖倒置原则的一种设计的思路,具体采用的方法就是所谓的依赖注入(Dependence Injection)。控制反转,是指依赖对象的获得反转,也就是一个解耦的过程。对象之间的依赖关系管理由具有对象来完成,会导致代码之间的耦合程度增强。因此对象之间的依赖关系,交由一个地方统一管理(IOC容器)。控制反转的实现由很多种方式,在Spring种,IOC容器就是实现这个模式的载体,依赖注入是最主要的实现。所谓依赖注入,即组件之间的依赖关系由容器在应用系统运行期来决定,也就是由容器动态地将某种依赖关系的目标对象实例注入到应用系统中的各个关联的组件之中。在对象生成或者初始化的时候将数据注入到对象中,也可以通过将依赖对象的引用注入到对象的数据域中(通过对象的引用完成方法的调用)。
Spring实现IoC的思路和方法:IoC统一集中处理对象之间的依赖关系。Spring实现IoC的思路是提供一些配置信息来描述类之间的依赖关系,然后有容器去解析这些配置信息,继而维护对象之间的依赖关系,前提是对象之间的依赖关系必须在类中定义好。
方法:
应用程序中提供类,提供依赖关系(属性或者构造方法)
将需要交给容器管理的对象通过配置信息告诉容器(xml,annotation,javaconfig)
把各个类之间的依赖关系通过配置信息告诉容器
容器启动时,会根据配置信息创建对象,会放到容器中
作业三
请用接口隔离原则优化Cache类的设计,画出优化后的类图。
版权声明: 本文为 InfoQ 作者【王海】的原创文章。
原文链接:【http://xie.infoq.cn/article/b0ae2c5bb91fa5f7f7f897e1d】。未经作者许可,禁止转载。
评论