架构师 0 期 | 设计模式练习

用户头像
刁架构
关注
发布于: 2020 年 06 月 17 日
架构师 0 期 | 设计模式练习

作业一:

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



依赖倒置原则(DIP)

上面说到框架是定义规范的,我们开发过程中用到的比如Spring、Mybatis、Tomcat、Jetty等框架都是这么做的,使用者无需调用他们的方法,就能使用他们的功能。

是不是很神奇,核心关键就是使用到了依赖倒置原则。



依赖倒置原则定义

  • 高层模块不应该依赖底层模块,二者都应该依赖抽象。

  • 抽象不应该依赖具体实现,具体实现应该依赖抽象。



软件高层指的是方法调用方。

针对一个项目来说,值钱的地方在高层,即业务层。这些功能实现了公司的核心业务。

传统的软件写法是,底层方法库实现一个功能,供高层调用。这样做有一个弊端是,当底层技术变更,比如更换数据库等,高层的业务层就得修改,牵一发动全身。



使用依赖倒置原则,可以开发出依赖更少,低耦合,可复用的代码。

关键是接口所有权的倒置

高层模块定义一个抽象接口,低层模块去实现这个接口。

高层模块通过抽象接口使用低层模块。



接口的所有权被倒置的,接口所有权归高层,低层去实现。

即调用方制定接口,低层实现。

如果低层更换,只需实现接口即可,高层无感。

实现高层模块复用

而且高层模块也增加了复用性,不依赖低层。

高层提供抽象接口,当有类似的功能时,可以复用高层代码,只需实现高层提供的接口,则可以复用高层代码,并可根据实际情况实现不同效果的。

好莱坞原则

Don't call me, I will call you.

不要来调用我,我会调用你。

即不用主动调用我,当需要的时候,我自动会调用你,来通知到你。



作业二:

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

iOS中代理模式

比如最常用的UIKit中的UITableView,提供了接口,面对不同列表样式时,只需要实现对应的代理就可以。

面向接口编程。



作业三:

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

作业三提示:cache 实现类中有四个方法,其中 put get delete 方法是需要暴露给应用程序的,rebuild 方法是需要暴露给系统进行远程调用的。如果将 rebuild 暴露给应用程序,应用程序可能会错误调用 rebuild 方法,导致 cache 服务失效。按照接口隔离原则:不应该强迫客户程序依赖它们不需要的方法。也就是说,应该使 cache 类实现两个接口,一个接口包含 get put delete 暴露给应用程序,一个接口包含 rebuild 暴露给系统远程调用。从而实现接口隔离,使应用程序看不到 rebuild 方法。





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

刁架构

关注

叫我刁架构 2017.10.25 加入

预备备网红首席架构师,移动端开发者,边缘设计支持者。

评论

发布
暂无评论
架构师 0 期 | 设计模式练习