iOS中的基本架构

input equal: output

背景

  • 近期在网上翻阅了大量的资料去查找iOS中架构的相关文章,但文章很少,大部分都是java相关的。虽然平台语言不一致,思想总归相同的。然而从代码结构方面,应用到iOS平台仍旧感觉有点怪怪的。
  • 当然也在网上找到了相关iOS架构资料,但是文章谈到架构优化的点都有自己的思考,自己拿过来应用也很难去考虑整体。因此无不感叹他们好牛逼,就想去探索一下他们达到这种程度的前置知识。
  • 看到里边涉及到的点,就去找了相关的书籍进行翻阅学习。其中主要看了两本书:HeadFirst 设计模式App架构设计。当再去看网上的其他文章、源码后,终于能够看透一些背后应用的思想。
  • 本文是关于 App架构设计 这本资料看完之后的总结,方便日后进行查看。
  • HeadFirst 设计模式,也会在之后的文章中进行总结,方便日后的查看。

本文按照自己的记忆点简单精简罗列一下本书中学习到的内容

常见架构

mvc: v -> c -> m
mvp: v -> c -> p -> m
mvvm: v -> c -> vm -> m
mvc+vs: v -> c -> vs -> m
可以看出:mvp,mvvm,mvcs都是在mvc的基础上进行扩展的。换句话说,他们是mvc的强化版本。

以一个view上的button举例:

1. mvc

action: -> v -> c -> m; m -> (notification) -> c -> (update) -> v
network/other moudle:是从c开始进行触发,然后后续的执行流程和action一样的。

  1. c持有v和m。而v和m之间又是相互独立的模块。
  2. 当点击v上button时,将点击方法传递到了c层进行响应;由于c拥有m,因此在c中调用更新m的方法;
  3. 当m中的内容发生变化时,c作为m层数据发生变化的监听者。c会收到发生变化的通知,然后在c层开始相应的通知方法;由于c拥有v,则在通知的响应方法中,去调用v中的方法,从而v将会得到更新。
    以下的几种模式,是从mvc演化而来,他们是在v和m中加入了自己的隔离层进行处理。

2. mvp:

action: v -> c(pro) -> (action最终转发到p层) -> p -> m; m -> (notification) -> p -> (更新c层的属性) -> c -> v

  1. p层持有c层和m层。
  2. c层是遵循某个协议pro。而pro中暴露的接口是v要展示的内容

3. mvvm

action: -> v -> c -> vm -> (update) -> m; m -> (notification1) -> vm -> (notification2) -> c -> (update) -> v

  1. c持有v和vm。vm持有m。
  2. vm的模块将为v层提供展示逻辑逻辑的接口。
  3. c层时刻监听vm中暴露属性的通知变更。
  4. 3也可以表述成:vm提供了变化的observable序列,供c层进行订阅,当subscribe到新的值后,c层进行更新v的数据。

4. mvc+vs

  1. viewstate中存储当前的状态信息
  2. 在mvc的基础上,时刻保持v中的状态信息,那些信息当前并没有去更新model。
  3. 将这些信息更新到viewstate中。
  4. 在view触发时,去将vs中的值更新到model中。

参考资料

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