基于路由机制设计的app架构思路

转载请注明出处:王亟亟的大牛之路

�有差不多接近一个多月没发文了,最近事情比较多。各种会,写各种计划,解决各种问题,以及团队内部扩招那些事(每天邮箱各种简历眼花缭乱)

先安利:我的Git 之后会把内容都往git book等地方迁移,所以对我写的东西感兴趣的小伙们可以follow我的git,以获取最新内容!


事情的由来

最近聊了许多小伙报价从高到低的各式各样的都有(这里只是举个例子,没有任何贬低的意思)
一提架构张嘴就来 MVC MVP MVVM等等等,如果简历写有大项目的架构经验并且要价偏高的我一般默认这样的小伙不是太可用(先看,别急后面有解释),或者说你之前的项目"不够大"。

如果要价不是很高,经验不是写的很丰富的话那我还可以理解。

为什么这么"默认"?

  1. 太笼统
    MVC那套从写Web时期就一直使用至今,你抓个写java web的也能给你说的头头是道,纸上谈兵没有实际意义
  2. 实用性不足
    每个"重量级"的项目都有不同的实现方式,简单的拿几个英文单词硬套是否真的合理,真的适合自己的应用场景
  3. 知识点滞后
    从国内android/iOS热更(组件化)大潮(15年)出现后各式各样基于分包,插件化等等的内容层出不穷,还指望一套架构吃死那是不可能了。

简易组件化设计

把共同属性的代码提取出来制作成各种基础库,把单独的功能封装成Library包,不同业务通过分包结构分到不同module下,组内每人开发自己的module。

这里写图片描述

把纯业务模块和非业务模块以及一些"刚需"的代码做了简易的分包,库与库之间的关系看似很完美
写各个模块的小伙伴们可以各做各的,没有任何交集

于是有一天,来了个不可描述的场景
(只是举例子)
直到有一天产品说,我们要集成 TalkingData,我们要Ui库的各个控件必须做埋点!

那怎么办?

ui库的小伙伴去依赖 第三方统计库,去写里面的埋点业务

还有,ui组件的细节我要计算(你别管合理不合理,产品就说要算,我们就模拟这是个必做的业务)

ui库还得去依赖工具库,然后这个架构图成了这样


这里写图片描述

这只是一轮迭代,后面还有各种不可描述的复杂姿势,导致最后你的项目又一团糟,可维护性又像所有代码在一个包里那样差了

基于"路由的架构设计"

经过重新设计后大致长这样


这里写图片描述

强烈建议子项目自身不强制实现方式,诸如你要用MVC,MVP的话酌情处理吧,哪个合适用哪个,不要"伪"设计模式就好!

因为基础功能库确实是一个被依赖可能性极大的库所以我们让他依赖着"路由"库
所有的子包,包括主项目都去依赖这个库,而基础功能库依赖于工具库和"路由"库
工具库放进去的意义就不说了,贯穿整个app过程都有大概率调用工具类,无论是主项目还是子工程包

着重说一下这个"路由"体系对于各个包/内容的意义

对于页面:
提供统一的跳转规则,更可控的跳转拦截,更大的延展性等等等(这部分可以看我之前写的一篇关于ARouter的文章:http://blog.csdn.net/ddwhan0123/article/details/54409574)

对于子包:
所有的包之间的相互调用关系就不存在了,耦合性降低,所有的通信统一都交给路由来处理分发(并且持有规则),而注册工作则交由主工程去进行初始化。无论子包怎么变化(数量与内容),只要在统一的路由规则下都可以畅通无阻地运行,而不是改一处则动全身!

在子包的概念里,路由是规则是关系链

这么做的目的很简单

  • 可测试性增强--只测自己想测的包就行,根本不用管其他包的关系链
  • 复用性增强--类似的基础组件可以在不同的事业群下使用
  • 支持并行开发--你写你的我写我的
  • 耦合降低--除了基础库外,其他库没有了依赖关系

该设计不考虑多进程场景,庞大集群项目需另外考虑考虑

更多架构选择/知识点:
https://github.com/googlesamples/android-architecture
http://www.infoq.com/cn/articles/ctrip-android-dynamic-loading
http://www.open-open.com/lib/view/open1436316754208.html
http://keeganlee.me/post/architecture/20160222

有问题可以联系我:


这里写图片描述
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容