架构师训练营 4 期 第 2 周
作业一:
请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
第一次听说依赖倒置的时候时候,最不理解的就是“倒置”,后来想如果有倒置,那么肯定有正置,只有找到什么是正置,才能明确什么是倒置。 在《敏捷软件开发-原则、模式与实践》 中对于正置,有简单的描述:高层模块依赖于底层的细节,或者说依赖于具体的实现。那么倒置就是与其相反,其具体原则就是:
高层模块不应该依赖低层模块,两者都应该依赖其抽象;
抽象不应该依赖细节。细节应该依赖抽象。
如果用 Java 语言描述的话就是:
模块之间的依赖是通过抽象(接口或抽象类)发生的,具体类之间不相互依赖
接口或抽象类不依赖于具体类。具体类依赖于接口或抽象类。
“不要给我们打电话,我们会给你打电话(don‘t call us, we‘ll call you)”这是著名的好莱坞原则。在好莱坞,把简历递交给演艺公司后就只有回家等待。由演艺公司对整个娱乐项的完全控制,演员只能被动式的接受公司的差使,在需要的环节中,完成自己的演出。 ——百度百科
由此可以看出,好莱坞原则强调的是高层对于底层主动调用,而不需要底层向高层自我推荐(好像有点惨),高层只关心它需要的接口(这些接口于高层属于同一层),而底层实现高层需要的接口,对于底层的变化高层也不关心(每个演员演同一部戏,细节可能不一样,但是整体效果都一样;演员随时可以换,戏不换。)。
从这两个描述可以看出“依赖倒置原则”与“好莱坞原则”强调的都是高层拥有所有权。
请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。
ManageabelCache 暴露给系统进行远程调用
ApplicationCache 给应用程序调用
Cache 接口继承自 ManageabelCache 与 ApplicationCache ,如果其有一个实现类 ConcreteCache ,则其当其暴露给应用程序的时候只是被当作 ApplicationCache ,当其暴露给系统进行远程调用时,被当作 ManageabelCache
作业二:根据当周学习情况,完成一篇学习总结
本周主要讲解的是框架设计,包括编程的发展以及一些设计原则,其中主要的设计原则有:
SRP Single Responsibility Principle:单一职责原则
OCP Open Closed Principle:开闭原则
LSP Liskov Substitution Principle:里氏替换原则
ISP Interface Segregation Principle:接口隔离原则
DIP Dependence Inversion Principle:依赖倒置原则
虽然在课程上这些原则是框架设计原则,但是其是这些原则在编程中是通用的,而且在很多地方都存在,可能是日常在用而不自知。所有的设计原则主要目的都是构造一个高内聚、低耦合的系统,并且使其具有易扩展、可移植等特性。那么如何对这些原则加以理解呢,我认为可以从几个方面提高:
对于 Java 语言,可以学习其中比较好的设计理念,比如集合类库的设计
学习成熟的框架,对于 Java 可以学习 Spring 、 Tomcat 、 MyBatis 等
实践所学,自己构造一个框架
版权声明: 本文为 InfoQ 作者【引花眠】的原创文章。
原文链接:【http://xie.infoq.cn/article/8ce6aa4160db91cecab0f11d7】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论