什么是MVP? View层主要是用于展示数据并对用户行为做出反馈。在Android平台上,他可以对应为Activity, Fragment,View或者对话框。Model是数据访问层,往往是数据库接口或者服务器的API。Presenter层可以想View层提供来自数据访问层的数据,除此以外,他也会处理一些后台事务。 也就是说在mvp模式中,view只单纯的展示ui,所有的业务逻辑处理放在Presenter中(通过接口与Molde,View)交互。 MVP的优点,为什么采用mvp的架构? 现在开发安卓人员都会遇到这种问题,那就是在一个逻辑非常的复杂的Activity中,代码量尝尝会达到数百甚至上千行,造成了activity既像view,但是某一定意义更像mvc的Controller。最终,你会发现“所有的事物都被连接到了一起” , 这样的结果就是造就“万能的对象”。 With MVP 而MVP与MVC最不同的一点是M与V是不直接关联的也是就Model与View不存在直接关系,这两者之间间隔着的是Presenter层,其负责调控View与Model之间的间接交互,MVP的结构图如下所示,对于这个图理解即可而不必限于其中的条条框框,毕竟在不同的场景下多少会有些出入的。在Android中很重要的一点就是对UI的操作基本上需要异步进行也就是在MainThread中才能操作UI,所以对View与Model的切断分离是合理的。此外Presenter与View、Model的交互使用接口定义交互操作可以进一步达到松耦合也可以通过接口更加方便地进行单元测试。