架构师训练营 -week2- 作业

发布于: 2020 年 06 月 17 日
架构师训练营-week2-作业

作业一:

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

依赖倒置原则:高层模块不应该依赖低层模块,两者都应该依赖于抽象;抽象不能依赖实现,而是实现依赖抽象。其核心思想是面向接口编程。

       假设类A依赖于类B,此处类A为高层,类B为低层。后来需改为依赖类C,那么此时则需要修改类A才能达到此目的,但这样做有很大的风险。因此,添加接口I,使类B、类C实现接口I,类A通过接口I与类B或类C发生联系。将原来类A与类B、类C的直接依赖截断,倒置了类A与类B、类C的依赖关系,三者通过接口I产生联系。

  如下图:

好莱坞原则:Don’t call us, we’ll call you。

好莱坞原则更多的是在框架设计中体现。接口、抽象类好比参加好莱坞试镜的渠道,实现接口、抽象类则是参加试镜。在需要时,制片人/框架则会通知或调用具体的人/类。

例如各种框架中的接口类,我们会选择通过实现对应的接口类的方式,使框架在调用接口时调用我们的代码;而不是让框架代码直接调用我们定义的代码。

作业二:

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

这题好难,我太弱小了,稍微描述一下在spring框架推荐的编程方式吧。假设一个MVC三层接口的Web项目,有controller、service、dao三层,service层与dao层各自再细分接口层与实现层。

       通过在高层模块注入低层模块的接口的方式,实现高层对低层方法的调用。例如在controller中用注解的方式注入service层接口,在service的实现类中用注解方式注入dao层接口,如此逐层注入,避免了依赖具体的实现。

作业三:

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

方法一:

拆分多个子接口分别实现。

方法二:

通过抽象类CacheWrapper实现所有的ICache,后续的子类继承抽象类,并有选择地重写部分方法。

发布于: 2020 年 06 月 17 日 阅读数: 27
用户头像

晓-Michelle

关注

还未添加个人签名 2020.05.30 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营-week2-作业