极客时间第 0 期架构师训练营第二周作业

发布于: 2020 年 06 月 17 日

作业一

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

答:

原则描述:

1. 高层模块不应该依赖低层模块,二者都依赖抽象。

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

解析:

1. 所谓高层模块,是将一个或多个基础服务整合起来,实现某些具体业务流程的模块。

在高层模块不应该直接调用具体的基础服务类,因为这样,意味着具体业务流程需要依赖基础服务,在实际情况中一般是反过来的,业务流程决定基础服务。所以,为了保持扩展性,高层模块和底层基础服务都应该依赖接口或抽象类。

2. 在Button控制Lamp的例子中,button如何检测是否被按下,lamp如何turnOn如何turnOff,这些细节都不是接口或抽象类所关注的事情,而是由具体的类来实现。只要保证在接口或抽象类规定的上下文中,高层模块就能正常运作。

好莱坞原则:

依赖倒置原则是框架设计的核心原则。

框架和工具的区别是:框架设计和实现了一整套流程并抽象了相应的接口,使用者只需要实现相应的接口即可实现相应的需求。

而工具则是一些已经实现了某些功能的类库或服务,使用者需要主动调用它们。

框架可以认为是高层模块,低层模块则是具体的业务功能。框架会自动调用使用者编写好的业务功能。

所以,依赖倒置原则又被称为好莱坞原则(Don't call me, we'll call you)

作业二

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

答:k8s目前被当作一个容器管理系统在使用,但k8s实际上是一个资源调度系统。

k8s定义好了一系列的接口,允许用户对资源的更新事件作出自定义处理。

另外,docker容器只是k8s实现的可管理资源的一种。k8s在调用下层容器运行时的过程中,并不直接调用docker的api,而是通过一组叫做CRI的gRPC的接口来间接执行的。

所有满足CRI接口的容器服务都可以当作一类资源被k8s调度和管理。

作业三

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

答:

如上图:

  1. 应用程序依赖Cache接口

  2. system依赖Cache和reBuilder接口

  3. appCache实现了Cache接口,并被Client关联

  4. systemCache实现了Cache和Builder接口,并被System关联

用户头像

2流程序员

关注

还未添加个人签名 2020.03.18 加入

还未添加个人简介

评论

发布
暂无评论
极客时间第 0 期架构师训练营第二周作业