MVC、MVP、MVVM

MVC缺点
• 视图与控制器间过于紧密连接,视图与控制器是相互分离的,但却是联系紧密的部件,如果换个view,controller层就要改很多东西
• View对Model会直接访问

MVP特点
• M、V、P之间双向通信。
• View 与 Model 不通信,都通过 Presenter 传递。Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。
• View 非常薄,不部署任何业务逻辑,称为”被动视图”(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。
• Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时候可以保持Presenter的不变,这样就可以重用。不仅如此,还可以编写测试用的View,模拟用户的各种操作,从而实现对Presenter的测试–从而不需要使用自动化的测试工具。

MVC和MVP的区别
• MVC是允许Model和View进行交互的,而MVP中很明显,Model与View之间交互由Presenter完成;
• 但是MVP的接口太多,要定义很多接口

MVVM
架构思想
M(Model):控制着架构上的逻辑等的实体模型。

VM(ViewModel):与mvp不同的是ViewModel也是中间桥梁,但它并不需要契约类进行连接,而是使用DataBinding这一框架进行单向或双向的绑定。

V(View):代表着Activity的ui界面内容。

MVVM的关键思想还是在于数据绑定,原本的mvc或是mvp每次的ui更新,其上的数据也需要随着变化都是从代码中跟随逻辑进行变化,而使用MVVM将使控件与其需要的内容进行绑定,每一次的数据更新将自动进行ui的更新。

MVVM与MVP的区别
它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。这样开发者就不用处理接收事件和View更新的工作,框架已经帮你做好了。

MVVM适用场景: 适合数据驱动的场景,数据操作比较多的复杂应用程序。比如腾讯视频、网易云音乐、电商网站

缺点:ViewModel 的构建和维护的成本都会⽐较⾼。

你可能感兴趣的:(Android面试题,android)