美文网首页iOS学习
MVC、MVCS、MVVM

MVC、MVCS、MVVM

作者: 哇次哟累 | 来源:发表于2016-07-21 11:37 被阅读620次

    MVC(Model,View,Controller)

    Controller:数据加工


    View:数据展示

    Model:数据储存

    Controller:数据加工以及数据流调配

    2016年07月30日10:13:06

    MVC的整体划分(注:View Container---视图容器,是指ViewController自带View)

    iOS端MVC整体划分

    M:

    1.给ViewController提供数据

    2.给ViewController存储数据提供接口

    3.提供经过抽象的业务基本组件,共Controller调度

    C:

    1.管理View Container生命周期

    2.负责生成所有的View实例,并添加到View Container中

    3.监听来自View与业务有关的事件,通过与Model的合作,来完成相应事件

    V:

    1.响应与业务无关的事件,并因此引发动画效果,点击反馈等;

    2.界面元素表达


    MVCS(Model,View,Controller,Store)

    1. 基于MVC衍生出来的一套架构方案,从概念上来说,它拆分的部分是Model部分,拆出来一Store,用来专门负责数据存取。但从实际操作的角度来讲,它拆开的是Controller。

    2. 这算是瘦Model的一种方案,瘦Model只是专门用于表达数据,然后存储、数据处理都交给外面的来做。

    3. MVCS使用的前提:假设你是瘦Model,同时数据的存储和处理都在Controller去做。

    4. 所以对应到MVCS,它在一开始拆分的是Controller,因为Controller做了数据存储的事情,就会变得非常庞大,那么就把数据存储的部分抽离出来,交给Store去做。

    什么叫胖Model,瘦Model?

    1. 胖Model:包含了部分弱业务逻辑,即Controller从胖Model这里拿到数据之后,不要额外做操作或者只要做非常少的操作,就能将数据直接应用在View上。

    2. 瘦Model:只负责业务数据的表达,所有业务无论强弱一律交给Controller。即尽一切可能去编写细粒度Model,然后配套各种helper类或方法来对弱业务做抽象,强业务依旧交给Controller。


    MVVM(Model,View,ViewModel)

    1. 从MVC中派生而来,着重向解决的问题是尽可能地减少Controller的任务。

    2. MVVM、MVCS共识都是Controller会随着软件的成长,变很大很难维护很难测试。

    3. MVVM认为Controller做了太多数据加工的事情,所以把数据加工的任务从Controller中抽离,使得Controller专注于数据调配,ViewModel来负责数据加工并通过通知机制让View响应ViewModel的改变。

    4. MVVM是基于胖Model的架构思路建立的,然后在胖Model中拆分出Model和ViewModel。


    参考:iOS应用架构谈 

    相关文章

      网友评论

        本文标题:MVC、MVCS、MVVM

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