BeeHive 一个简单的 iOS 模块化框架

今天我们来说一个2016年 iOS 圈子里被说烂的的话题, App 的模块化.
当然, 根据我的风格, 咱们来通过一个框架来进行说明.
BeeHive, 一款阿里巴巴开源的模块化框架

BeeHive is a modular program of implementation in iOS , it absorbed the Spring Framework API service >concept to avoid to directly coupling between modules.

BeeHive 的结构

BeeHive的核心思想是模块分别处理自己的逻辑和业务, 然后通过暴露出来 模块的 service 来让模块间相互调用, 从而达到模块解耦和的作用, 下面我们来看下官方的结构图

Paste_Image.png

从图中我们可以很清晰的看到 BeeHive 的结构

BHCore 作为一个中心枢纽, 可以提供模块/服务的注册, 同时它还有一个很重要的作用就是把 appdelegate 里的方法向下传递, 从而做到让每一个模块能够做到单独维护自身的生命周期, 这一点我觉得是很好的方法.

Context 作为一个上下文也是让我觉得非常不错的一个设计, 这里面提供了当前的运行环境, App 的配置 以及 一些静态服务/静态模块的加载路径, 这样的做法能够让每一个模块都能根据下传的上下文在同一种状态或者环境中去进行初始化

模块和服务都是由每一个小组单独处理, 但是值得注意的是他们需要在一个统一的地方去维护自己模块独有的 service 协议.

更加细节的配置或者 event 请自行官网查看,或者阅读源代码.

思考

BeeHive 虽然是阿里开源的一款开源框架, 但是在我看来他还是一个不这么好用的框架, 所谓不这么好用的原因是它太简单了, 去除了多余的东西, 就保留了最原始的 模块和服务, 我们可以说这是他的优点,但是这也是它的缺点,就想 GO 语言一样, 爱他的人为他着迷, 恨他的人每天都在抱怨, 这个因人而定.

而, 我个人是喜欢复杂一点点的.

模块化就是为了解耦和, 在目前主流的两大派系就是 Router/Target-action
首先两大派系的共同点都是需要维护一种共同的协议, router 维护的是 url 规则和跳转协议, target-action 维护的是 service 的 interface, 这个大家半斤八两, 有人觉得 url 来的更方便, 有人觉得 action 来的更清晰.

url 的优点在于很擅长处理页面跳转的场景, 直接通过 url 就能跳转到相应的页面 但是缺点也是很明确的, 一个是不能很优雅的传递对象, 只能在 url 传递一些类似 id, type 之类的参数, 如果一定要传递对象, 要不就有一个中心管理器持有对象, 然后在 url 传递指针地址, 或者对应的 key, 第二种方式就是把对象序列化再反序列化,但是这种我认为不好,有要处理序列化又对性能有所损耗.第二个不足之处就是对于逻辑的处理有不足之处,我们如果给不同的逻辑处理也添加相应的 url scheme 与之对应,不免会造成不清晰的感觉.

target-action 的最大优点在于清晰, serivce 中调用的方法清晰的描述了要做的事情, 又能很方便的传递参数.这一点是 url 怎么也无法媲美的. 第二个优点在于安全, 不会因为外界了解了app 内 url 跳转的规律从而通过模仿 url 来做一些不好的事情. 但是缺点就是我之前说的麻烦, 写起来麻烦, 用起来麻烦, 页面跳转更是各种纠结.

在我看来既然两种方式既然都有可取之处, 咱们就都拿过来使用, 使用 url 来处理跳转情景, 用 target-action 来处理逻辑相关的东西.
这样的坏处很明显, 需要维护两份协议, service 和 url scheme
但是优点也是有的

  1. 处理页面跳转时候很方便
  2. APP 和 web 可以很好的结合在一起, 相互调用很方便
  3. 能够把一些敏感逻辑封装到 service 中, 保证不能被随便调用

我的疑惑: 如果使用 url 进行跳转, 那么我们在同一模块中是否也要使用这种方式呢? 各路大神各种讨论, 我是在模块内也要使用 router 跳转那类人

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

推荐阅读更多精彩内容