不管是做 iOS 开发还是安卓开发的同学,对 MVC 和 MVVM 架构都不陌生了,但很多做 iOS 的同学对 MVP 架构都比较陌生,这个概念来源于安卓,但即使是很多优秀的安卓开发者,也不一定能说清楚 MVP 架构和 MVC、MVVM 的区别。
在阮一峰老师的MVC,MVP 和 MVVM 的图示一文中有一些图例说明,很遗憾,也许他描述的是前端开发中的概念,在移动开发领域并非如此。
我们先说 MVC 模式,大家都知道项目被分为三个模块,View、Model 和 Controller。在标准 MVC 中,这三个模块两两可以交互,借用阮老师的图来表示一下(实际上箭头是双向的)
因此标准的 MVC 存在一些问题和改进点:
模块间交互太多导致关系复杂,难以管理
Controller 既要处理视图相关逻辑(比如改变控件颜色和位置),也要处理数据相关逻辑,比如过滤去重、校验、修改等等
数据改变很容易,比如读取数据库或者网络请求,但不太方便映射到视图改变
对于安卓开发者来说,MVC 模式就是标准的 MVC,而对于 iOS 开发者来说,正如斯坦福公开课上白胡子老爷爷画的图那样,MVC 模式已经是改进后的 MVC 了,View 和 Model 之间不能直接访问,必须经过 Controller 中转。
View
|