面试题:MVCMVPMVVM 相关区别解析
Posted 码农每日一题
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题:MVCMVPMVVM 相关区别解析相关的知识,希望对你有一定的参考价值。
问:说说你对 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)。
当然了,架构模型这种东西没有绝对的答案,没有绝对的理解,也没用绝对的套用,重点在于如何进行合理的分层与交互设计,如何做到最小耦合和灵活插拔。
以上是关于面试题:MVCMVPMVVM 相关区别解析的主要内容,如果未能解决你的问题,请参考以下文章