面试题:MVCMVPMVVM 相关区别解析

Posted 码农每日一题

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题:MVCMVPMVVM 相关区别解析相关的知识,希望对你有一定的参考价值。

码农每日一题
长按关注,工作日每天分享一个技术知识点。

面试题:MVC、MVP、MVVM 相关区别解析

问:说说你对 MVC、MVP、MVVM 的理解


答:这三者算是老生常谈的问题了,具体区别可以参见下图,很直观。

面试题:MVC、MVP、MVVM 相关区别解析

(图片来源于 Google,如若侵权删除处理)

通过上图我们可以发现 MVC(Model-View-Controller)、MVP(Model-View-Presenter)、MVVM(Model-View-ViewModel) 的共同点是都具备独立的 Model 和 View,其中 Model 是数据对象,Model 不依赖于 View 的实现,而 View 是 UI 层,提供对最终用户的交互操作功能。而三者的差异主要提现在 Controller、Presenter、ViewModel 上。

Controller 会接收 View 的操作,然后根据操作调用 Model 的接口进行数据操作或进行 View 的跳转,所以一个 Controller 可以对应多个 View,Controller 对 View 实现不太关心,只会被动地接收,Model 的数据变化会不经过 Controller 而直接通知 View,一般 View 采用观察者模式监听 Model 的变化。

Presenter 与 Controller 类似,接收 View 的操作对 Model 进行操作,Presenter 会反作用于 View,Model 的数据变化首先会被 Presenter 获取,然后 Presenter 再去更新 View;一个 Presenter 只能对应一个 View,所以接口层代码会比较臃肿。

ViewModel 可以理解成是包含 View 的一些数据属性和操作的一种模型,View 的变化会直接影响 ViewModel,ViewModel 的变化或者内容也会直接体现在 View 上,ViewModel 与 Model 进行沟通操作;这种模式的核心就是数据绑定(Data Binding)。

当然了,架构模型这种东西没有绝对的答案,没有绝对的理解,也没用绝对的套用,重点在于如何进行合理的分层与交互设计,如何做到最小耦合和灵活插拔。

面试题:MVC、MVP、MVVM 相关区别解析

以上是关于面试题:MVCMVPMVVM 相关区别解析的主要内容,如果未能解决你的问题,请参考以下文章

.NET面试题解析(07)-多线程编程与线程同步

08 典型面试题深度解析

[ Java面试题 ]Java 开发岗面试知识点解析

Spring MVC常见面试题解析

java面试题全集(中)--Java Web和Web Service相关面试题

前端面试题:Vue面试题及Vue源码解析分享