我认为的MVC MVP MVVM虽然看起来不同,但是本质内核都是界面、逻辑、数据三分的思想,区别只是在于三者间互相调用的关系和联系情况不同。在以更新时产生的数据流就可以察觉到。
MVC是界面产生交互给逻辑,交互通过逻辑操作数据数据,数据“操作”(准确说是更新,但实际上确实是在操作)界面。
而MVP则是将逻辑放在了重点位置,界面操作逻辑,然后逻辑操作数据的同时又操作了界面,
MVVM则是MVP基础上将逻辑和界面紧紧联系(通过双向绑定来实现),实质上和MVP除了双向绑定差别不大。
许多人写的MVC等其实不算标准,也没法分类是MVC MVP 还是MVVM,但是那些架构能跟这三个沾边,基本上都遵循了界面逻辑数据三分代码的思路。
TIP
MVC、MVP、MVVM 的最后一个也就是 Controller、Presenter、ViewModel 其实在三个框架中位置是相似的、作用相同的,所以本文说的 Controller 基本涵盖了另外两个.
Model
模型一般就是经典的数据类。此外类的方法还可能提供了数据的计算办法。
核心点在于 只关心数据的类型本身的数据和操作 。
View
视图如其名,很好理解了。
核心点就是 手头的数据如何呈现。
Controller
控制器一般是控制模型的(比如说模型数据存入数据库,或使用模型数据作为网络请求的返回,等等各种活动),同时也会更新视图。(在 MVVM 是双向绑定自动更新)
核心点在于 只关心如何使用数据。
某种意义上,控制器给视图呈现数据也是一种操作,所以在一些结构中也有控制器传数据给视图进行显示的操作。
各种架构的细节
MVC
MVC 是 View 监听 Model 变化,并且 View 调用 Controller 对 Model 进行操作。(经典 MVC)
另一种 MVC 是 Controller 操作 Model 之后,依然使用 Controller 更新 View。
MVP
MVP (Presenter) 是让 Presenter 同时操作 View 和 Model。
MVVM
ViewModel 数据绑定了,用框架自动更新 View 和 Model 的数据。
比起另外两者,MVVM 双向绑定很强大,但是手搓也挺复杂的感觉。回头有空我写写试试再评价。