架构师训练营作业 (第二周)
作业一
请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被成为好莱坞原则?
在面向对象领域中,依赖倒置原则(Dependency inversion principle,DIP)是指一种特定的解耦形式,使得高层次的模块不依赖于低层次的模块的实现细节,依赖关系被颠倒(反转),从而使得低层次模块依赖于高层次模块的需求抽象。
该原则规定:
高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口。
抽象接口不应该依赖于具体实现。而具体实现则应该依赖于抽象接口。
我的理解:面向接口编程。
高层模块依赖接口,低层模块实现抽象接口,使用抽象接口将模块间解耦。
低层模块根据高层模块定义的接口进行实现,从这一角度讲是依赖倒置。
好莱坞原则
“不要给我们打电话,我们会给你打电话(don‘t call us, we‘ll call you)”这是著名的好莱坞原则。
好莱坞原则强调高层对低层的主动作用,即低层应该只管好自己的工作(具体实现),而高层自有它自己的工作,在不需要到某个低层的时候,高层并不会调用到这个具体低层,低层永远不需要向高层作出表示,说它需要被调用。
作业二
请描述一个你熟悉的框架,是如何实现依赖倒置原则的?
Phalcon最强大的特性之一可能就是依赖注入(DI)。依赖注入是种实现控制反转用于解决依赖性设计模式。Phalcon使用PhalconDI 组件名称的方式实现控制反转。PhalconDI 是一个服务容器,可以执行依赖注入和服务定位, 实例化应用所需要的所有组件,这降低了总体代码复杂性。
容器
管理对象的生成、资源获取、销毁等生命周期
建立对象与对象之间的依赖关系
启动容器后,所有对象直接取用,不用编写任何一行代码来产生对象,或是建立对象之间的依赖关系
依赖注入(DI)
其基本原则是:应用组件不应该负责查找资源或者其他依赖的协作对象。配置对象的工作应该由容器负责,“查找资源”的逻辑应该从应用组件的代码中抽取出来,交给容器负责。不必自己在代码中维护对象的依赖。
控制反转(IoC)
把传统上由程序代码直接操控的对象的调用权转交给容器,通过容器来实现对象组件的装配与管理。也就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。这就是控制反转。主要就是依赖关系的转移。
作业三
请用接口隔离原则优化Cache类的设计,画出优化后的类图。
优化前类图:
优化后的类图
版权声明: 本文为 InfoQ 作者【默默】的原创文章。
原文链接:【http://xie.infoq.cn/article/8e2ed04ba5608218436336590】。未经作者许可,禁止转载。
评论