面试题:谈谈MVP和MVVM模式,你有在自己的项目中使用过吗?
好吧,其实问过很多面试者,结果说明MVP和MVVM模式并没有到妇孺皆知的境地。不过也好,这么一个简单的问题我们就可以很容易区分出面试者是否对Android开发有热情。
在解释MVP时,我们往往喜欢拿它和大众都比较熟悉的MVC进行比较。
MVC全名是Model--View--Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。其中Model层处理数据,业务逻辑等;View层处理界面的显示结果;Controller层起到桥梁的作用,来控制View层和Model层通信以此来达到分离视图显示和业务逻辑层。
我们往往把Android中界面部分的实现也理解为采用了MVC框架,常常把Activity理解为MVC模式中的Controller。
而MVP其实是MVC的一种演进版本,它更简单,将MVC中的Controller改为了Presenter,View通过接口与Presenter进行交互,降低耦合,方便进行单元测试。
View:负责绘制UI元素、与用户进行交互(Activity、View、Fragment都可以做为View层);
Model:对数据的操作、对网络等的操作,和业务相关的逻辑处理;
Presenter:作为View与Model交互的中间纽带&