架构师训练营第二周命题作业
作业一:请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
答:依赖倒置原则是为了解决系统之间耦合度高,系统僵硬脆弱的问题而提出的。依赖倒置原则提出程序要依赖于抽象的接口,而不要依赖于具体的实现。简单点说就是要面对接口编程,而不要面对实现编程。因为在现实的问题领域,具体的实现常常是变动的,如果面对实现编程,系统就要常常变动,不能稳定。而接口是对现实的抽象,如果接口抽象的好,那么面对接口编程就是比较稳定的。如果有扩展性的需求,直接新增实现类去实现接口就可以了,不用修改接口和原来的实现类。
好莱坞原则用一句话来说就是:Don't call me,I'll call you.对应到软件开发中说的是上层组件和底层组件的调用关系。上层组件尽量不要调用底层组件,而由底层组件去调用上层组件。这样可以减少上层组件对底层组件的依赖。对应到依赖倒置原则上,这里的上层组件指的是接口,下层组件指的是实现类。接口不要调用实现类的方法,而由实现类调用接口的方法。好莱坞原则和依赖倒置原则在对依赖的处理上是相同的,表达方式不同,有异曲同工之妙。
作业二:请描述一个你熟悉的框架,是如何实现依赖倒置原则的。
答: Spring框架的两大特点是IOC和AOP。IOC是控制反转,AOP是面向切面编程。控制反转特性就是依赖倒置原则在Spring中的具体体现。控制反转特性提出上层组件只关心依赖提供的功能,并不关心依赖的创建,将上层组件和下层组件之间进行了更进一步的解耦。那依赖是怎么创建的呢?在Spring中,依赖由依赖注入这个功能来提供。Spring中实现依赖注入有三种方式:1)构造函数中注入 2)setter 方式注入 3)接口注入。
作业三:请用接口隔离原则优化Cache类的设计,画出优化后的类图。
答:优化后的类图如下所示
评论