美文网首页
iOS中的基本架构

iOS中的基本架构

作者: MrOreo | 来源:发表于2019-08-21 11:36 被阅读0次
    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中。

    参考资料

    相关文章

      网友评论

          本文标题:iOS中的基本架构

          本文链接:https://www.haomeiwen.com/subject/qphbsctx.html