写点什么

架构师训练营 4 期 第 2 周

用户头像
引花眠
关注
发布于: 2021 年 01 月 10 日

作业一:

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

第一次听说依赖倒置的时候时候,最不理解的就是“倒置”,后来想如果有倒置,那么肯定有正置,只有找到什么是正置,才能明确什么是倒置。 在《敏捷软件开发-原则、模式与实践》 中对于正置,有简单的描述:高层模块依赖于底层的细节,或者说依赖于具体的实现。那么倒置就是与其相反,其具体原则就是:


  1. 高层模块不应该依赖低层模块,两者都应该依赖其抽象;

  2. 抽象不应该依赖细节。细节应该依赖抽象。


如果用 Java 语言描述的话就是:


  1. 模块之间的依赖是通过抽象(接口或抽象类)发生的,具体类之间不相互依赖

  2. 接口或抽象类不依赖于具体类。具体类依赖于接口或抽象类。


“不要给我们打电话,我们会给你打电话(don‘t call us, we‘ll call you)”这是著名的好莱坞原则。在好莱坞,把简历递交给演艺公司后就只有回家等待。由演艺公司对整个娱乐项的完全控制,演员只能被动式的接受公司的差使,在需要的环节中,完成自己的演出。 ——百度百科


由此可以看出,好莱坞原则强调的是高层对于底层主动调用,而不需要底层向高层自我推荐(好像有点惨),高层只关心它需要的接口(这些接口于高层属于同一层),而底层实现高层需要的接口,对于底层的变化高层也不关心(每个演员演同一部戏,细节可能不一样,但是整体效果都一样;演员随时可以换,戏不换。)。


从这两个描述可以看出“依赖倒置原则”与“好莱坞原则”强调的都是高层拥有所有权。


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




  1. ManageabelCache 暴露给系统进行远程调用

  2. ApplicationCache 给应用程序调用

  3. Cache 接口继承自 ManageabelCache 与 ApplicationCache ,如果其有一个实现类 ConcreteCache ,则其当其暴露给应用程序的时候只是被当作 ApplicationCache ,当其暴露给系统进行远程调用时,被当作 ManageabelCache


作业二:根据当周学习情况,完成一篇学习总结

本周主要讲解的是框架设计,包括编程的发展以及一些设计原则,其中主要的设计原则有:


  1. SRP Single Responsibility Principle:单一职责原则

  2. OCP Open Closed Principle:开闭原则

  3. LSP Liskov Substitution Principle:里氏替换原则

  4. ISP Interface Segregation Principle:接口隔离原则

  5. DIP Dependence Inversion Principle:依赖倒置原则


虽然在课程上这些原则是框架设计原则,但是其是这些原则在编程中是通用的,而且在很多地方都存在,可能是日常在用而不自知。所有的设计原则主要目的都是构造一个高内聚、低耦合的系统,并且使其具有易扩展、可移植等特性。那么如何对这些原则加以理解呢,我认为可以从几个方面提高:


  1. 对于 Java 语言,可以学习其中比较好的设计理念,比如集合类库的设计

  2. 学习成熟的框架,对于 Java 可以学习 Spring 、 Tomcat 、 MyBatis 等

  3. 实践所学,自己构造一个框架


对编程范式的总结

对设计原则的总结

发布于: 2021 年 01 月 10 日阅读数: 16
用户头像

引花眠

关注

还未添加个人签名 2018.06.11 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 4 期 第2周