架构师训练营作业 (第二周)

用户头像
默默
关注
发布于: 2020 年 06 月 14 日

作业一

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



在面向对象领域中,依赖倒置原则(Dependency inversion principle,DIP)是指一种特定的解耦形式,使得高层次的模块不依赖于低层次的模块的实现细节,依赖关系被颠倒(反转),从而使得低层次模块依赖于高层次模块的需求抽象。

该原则规定:

  1. 高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口。

  2. 抽象接口不应该依赖于具体实现。而具体实现则应该依赖于抽象接口。

我的理解:面向接口编程。

  1. 高层模块依赖接口,低层模块实现抽象接口,使用抽象接口将模块间解耦。

  2. 低层模块根据高层模块定义的接口进行实现,从这一角度讲是依赖倒置。



好莱坞原则

“不要给我们打电话,我们会给你打电话(don‘t call us, we‘ll call you)”这是著名的好莱坞原则。

好莱坞原则强调高层对低层的主动作用,即低层应该只管好自己的工作(具体实现),而高层自有它自己的工作,在不需要到某个低层的时候,高层并不会调用到这个具体低层,低层永远不需要向高层作出表示,说它需要被调用。



作业二

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



Phalcon最强大的特性之一可能就是依赖注入(DI)。依赖注入是种实现控制反转用于解决依赖性设计模式。Phalcon使用PhalconDI 组件名称的方式实现控制反转。PhalconDI 是一个服务容器,可以执行依赖注入和服务定位, 实例化应用所需要的所有组件,这降低了总体代码复杂性。

容器

  • 管理对象的生成、资源获取、销毁等生命周期

  • 建立对象与对象之间的依赖关系

  • 启动容器后,所有对象直接取用,不用编写任何一行代码来产生对象,或是建立对象之间的依赖关系



依赖注入(DI)

其基本原则是:应用组件不应该负责查找资源或者其他依赖的协作对象。配置对象的工作应该由容器负责,“查找资源”的逻辑应该从应用组件的代码中抽取出来,交给容器负责。不必自己在代码中维护对象的依赖。

控制反转(IoC)

把传统上由程序代码直接操控的对象的调用权转交给容器,通过容器来实现对象组件的装配与管理。也就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。这就是控制反转。主要就是依赖关系的转移。

作业三

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

优化前类图:



优化后的类图





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

默默

关注

还未添加个人签名 2018.09.17 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营作业(第二周)