写点什么

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

用户头像
2流程序员
关注
发布于: 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 期架构师训练营第二周作业