为什么需要MVP
MVP是MVC的一种衍生,MVP模式中不容许View直接访问Model,这是MVP与MVC最大的不同之处。View中应该只有UI逻辑,捕捉用户输入以及视图的渲染。这样将其它复杂的逻辑抽离出来放到Presenter中去,这样就出现了MVP。这种模式和传统的软件工程思想一样,降低了耦合度,模块化,更方便维护。Presenter通常是通过定义好的接口与View进行交互,那么开发的时候,只要写一个测试类去实现该接口即可模拟用户的各种操作进行测试,而不需要使用自动化测试工具。甚至可以不用再每次在手机上重新运行应用了,测试也更有效率。
简单的说,就是将View中的复杂工作抽取到Presenter中,降低了耦合度,便于维护和测试,也增强了复用性。View不直接与Model交互,而是通过与Presenter交互来与Model间接交互。Presenter与View的交互是通过接口来进行的。通常View与Presenter是一对一的,但复杂的View可能绑定多个Presenter来处理逻辑。
View(Activity)只负责处理用户交互,并把数据相关的逻辑操作都交给了Presenter去做,而Presenter调用Model处理完数据之后,再通过View的抽象接口更新View显示的信息。这样就实现了完整的解耦UI与逻辑操作。