以下基于对三种模式已经熟悉所总结,不会介绍模式的基础概念,以下是自己结合其他人和自己实际开发中的经验对这些概念一些感悟。
- Activity是V还是C
对于Activity属于V还是属于C这个问题,之前没有想明白,后来了解了一些IOS的概念,有了一些启发。
IOS中有明确的MVC架构。每个 xib
或 storybord
用来描述布局,相当于Android中的 xml
,对应V; ViewController
处理页面的逻辑,对应C;Android和IOS都没有定义M,需要开发者自己去实现。那么,Android中的C呢?Android中没有ViewController
,其实就是 Activity
了,如IOS中 ViewController
,Activity
同样响应V的各种触发事件。
- X因素
M-V-X的本质是大同的,重点在于X作为桥梁来连通M、V来使得整个系统良好运转。X的模式之间的不同主要是所确定的M与V的数据传递流程不同。在我看来,流程的不同主要体现在:
传统的MVC中三者之间都有交互,View(界面)触发事件—>Controller(业务)处理了业务,然后触发了数据更新—>不知道谁更新了Model的数据—>Model(带着数据)回到了View—>View更新数据,形成闭环,这样关系维护略显复杂;
MVP则是使用P截断了M与V之间的联系,降低了复杂程度,指责结构简单明了;
MVVM则是不仅简化了业务与界面的依赖关系,还优化了数据频繁更新的解决方案,甚至可以说提供了一种有效的解决模式,但是这必须依赖于特有的情景,更多的是框架提供的一种能力,例如Android平台最近支持的[Data Binding。