写点什么

架构师训练营第二周作业

发布于: 2020 年 06 月 17 日

作业一:

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



说依赖倒置之前,先说下依赖。A依赖B,说明A的功能实现上需要使用到B的功能,比如,A是到某地去,那B就是公交车、自行车或驾车。这种依赖是直接依赖,当B修改功能的时,如从自行车转为驾车,则A传入B的参数要响应修改。B的修改会影响到A。

现在A不想受到B实现的影响,怎么办呢?加一层,软件设计常用方法。加的这一层要脱离具体实现,则可使用接口或者抽象类,这两种形式都不是具体实现。

现在B对A的需求是不了解的,那这个抽象层只能A去定义了。

A自己抽象出接口,B去实现。A不再依赖B,B依赖A定义的方法,依赖倒置。

高层功能不应该依赖底层实现,底层实现依赖高层功能。



好莱坞原则:不要调用我,我会来调用你(Don't call me, I will call you)。

底层组件实现高层定义的接口,由高层决定何时调用。体现了高层的主动性和规矩性。

所以依赖倒置原则有时也形象的成为好莱坞原则。



作业二:

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



Netty中,消息处理器。

Netty框架定义了ChannelInboundHandler和ChannelOutboundHandler接口,开发者只需要实现这两个接口并加入到Channel执行Chain中,就可以被框架调用执行业务逻辑。

这里是使用接口来实现的依赖倒置。

Netty中还有一些抽象类,用来实现依赖倒置,如SimpleChannelInboundHandler,使用抽象类可以使框架实现一些通用逻辑,更易于业务开发者使用。

SpringBoot中,实现依赖倒置,使用的是注解。如 @RestController 等。

依赖倒置是一种思想,使上层不依赖底层,而底层依赖上层。

实现的途径可以是接口、抽象层、注解



作业三:

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



使用两个接口进行隔离,一个接口含有get、put、delete供应用内部使用,一个只含有rebuild供外部重置配置调用使用。



用户头像

喜欢简洁干净的代码 2018.05.04 加入

使用技术,实现业务。思考业务,创新技术。

评论

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