MVC(Model,View,Controller)
Controller:数据加工
View:数据展示
Model:数据储存
Controller:数据加工以及数据流调配
2016年07月30日10:13:06
MVC的整体划分(注:View Container---视图容器,是指ViewController自带View)
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。