iOS学习

MVC、MVCS、MVVM

2016-07-21  本文已影响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应用架构谈 

上一篇下一篇

猜你喜欢

热点阅读