iOS标准MVC
M: Model逻辑处理计算层 程序的行为
C:Controller 控制模型如何显示在View上 控制View如何工作
V:View 视图界面
C -> M
C -> V
M <≠> V
V -> C 不能直接通信! action - target 或者should did will 通过delegate完成 protocol 和datasource
V->M 不能直接通信! 通过Notification&KVO进行通信
永远不要在Model层添加import UIKit
MVVM 现在流行的开发模式(我也正在学,新的东西总装B)
- MVVM是MVC模式的一个变种,它正逐渐流行起来
- MVVM模式让View层代码变得更清晰,更易于测试
- 严格遵守View=>ViewModel=>Model这样一个引用层次,然后通过绑定来将ViewModel的更新反映到View层上。
- ViewModel层决不应该维护View的引用
- ViewModel层可以看作是视图的模型(model-of-the-view),它暴露属性,以直接反映视图的状态,以及执行用户交互相关的命令。
- Model层暴露服务。
- 针对MVVM程序的测试可以在没有UI的情况下运行。
- ReactiveCocoa框架提供强大的机制来将ViewModel绑定到View。它同时也广泛地使用在ViewModel和Model层中。
MVVM的好处(也是复制的)
- 轻量的视图:所有的UI逻辑都在ViewModel中。
- 便于测试:我们可以在没有视图的情况下运行整个程序,这样大大地增加了它的可测试性。
标准的MVVM 起初应该是微软推广的在.net 下使用的
ReactiveCocoa(也就是响应式编程所需的库,直接pod导入就可以用)
这东西的简介网上一搜一大堆,就不细说了,
就是响应式编程,
主要是用信号和管道,
可以省掉很多代码,基本告别target ,下面的小demo做了就知道了,很酷炫
而且层次感很强,
最主要的,代码感觉很高端,很唬人,其实就那么回事,专业辅助MVVM
在我看来,这两个真是绝配了
给个实践的demo练习
http://southpeak.github.io/blog/2014/08/02/reactivecocoazhi-nan-%5B%3F%5D-:xin-hao/