一天一面试题---第二天(MVP和MVC是什么,有什么区别)
MVC: View接收到用户的操作之后,将用户的操作来交给Controller(activity),Controller完成业务逻辑,将得到的结果封装成Model,再进行View的更新.Controller做的事情非常多,即做了View层逻辑,又做了Model层逻辑,导致过度臃肿.
View: layout也可以是自定义View
Model: JavaBean,SqliteDataBase;
Controller: Activity
比如我们创建一个项目的时候,View:activity_main.xml Controller:MainActivity 当我们获取到数据的时候创建的Bean就是Model
当用户点击一个Button时,Controller层处理Button的点击事件,开始向网络请求,获取到网络数据,封装成一个JavaBean(Model),Model则将数据传给Controller,再由Controller更新UI.
MVP:当View层接到用户点击的事件后,会将用户的操作交给Presenter,Presneter收到View层指令,可以自己处理,也可以交给Model层处理,一般情况是交给Model层来处理,当Model层处理完事件后,将得到的结果通过接口返回给Presneter,最后Presneter则将封装好的数据转给View,最后View层进行渲染;
View:Activity,Fragemnt. View层只有Presenter的引用,
Presneter:就是View和Model层的桥梁. Presenter层既会有View层引用,也会有Model层引用
Model:数据处理层. Model层只有Presneter的引用
所以MVP其实也就是通过Presenter这个桥梁,来接通View和Model.