依赖管理

不等心情,一点一点强行开始

上面博文《解决“单接口,多类”架构设计的回调问题》的源码已经上传Github:https://github.com/libinggen/CallBack
本博文的源码也一直在Github上更新,已经写了好几天了:https://github.com/libinggen/DependencyManagement

放Github的好处是,我不用浪费时间在文章里贴代码。而大家Clone下来就可以直接跑,直接帮我修改。

依赖管理,是指在什么地方以什么形式引入外部代码。

依赖管理为什么重要呢?
因为,依赖在哪里,处理代码就会那里,而bug也就会出现在那里。
于是,反过来,为了让bug集中,就需要让处理代码集中,也就需要管理好代码的依赖关系。

依赖管理,有三个层面。
1、相同的代码,只出现在一个地方,也叫单一职责原则。
2、通过引用协议对象,让依赖关系中的组件更容易更换。
3、从逻辑上安排依赖关系,让依赖关系更容易被人理解。

单一职责原则,是最基本的原则。它是代码模块化,设计模式的根本。
协议对象引用,使得功能变更时,只需要在一个统一的地方做最少的修改。
依赖逻辑关系,则主要是为了更方便人脑去理解代码之间的关系。

我们从ViewController的代码开发,来思考代码依赖关系。

最原始的做法,是把视图、数据模型、网络请求、本地存储、页面跳转五块代码全堆在ViewController上。这样一来,ViewController因为放了太多代码,而变得臃肿,难以维护。

怎么改善?

第一步,把长方法里的代码,提出来成为短方法,在原来的长方法里调用抽解出来的短方法。我们得到了非常多的短方法。

第二步,新建一个类,把短方法放到不同的类里。原类引用新类,调用新类方法完成功能。

第三步,创建协议对象,在原类外部配置协议对象,原类调用协议方法完成功能。需求变化后,只要逻辑没变,只需要在外部更换协议对象的配置,不需要修改本类。

第四步,根据逻辑关系管理协议对象的关系,进一步优化协议的依赖关系。
比如,一份数据应该对应到一个模型,和获取数据的网络请求、本地存储,可以由一个模型管理协议对象统一管理。

后记(下面以聊家常为主,没时间没兴趣的朋友请直接忽略):

这篇文章写了好几文,一直在优化Github上的代码。
而现在之所以可以成文,一来是代码优化到了一个阶段;二来是今早没有因为时间不够而一字写。从第一个字写下开始,后面的文章就写得非常快,顺理成章了。

所以,任何事情,不要被它的庞大吓倒,一点一点敲,一点一点吃,只会越来越容易。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,776评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,695评论 19 139
  • 作为一个半路出家的人,从一个小学讨厌写作文的人,到现在对于写文章这件事就能得到享受的人,这之间确实经历了很多。 ...
    瀑下顽石阅读 890评论 0 1
  • 屈子怀沙精魄隐,子规啼血乱云浮。 弹冠濯足香兰意,握瑾持瑜皓月楼。 翔舞鹜鸡轩室蔽,柙笯凤鸟楚天愁。 滔滔浊世摧心...
    眉间飞雪阅读 4,514评论 25 29
  • robot_localization中的传感数据准备 开始state estimation nodes 之前需要确...
    joey_zhou阅读 11,562评论 0 5