MVP是一种UI架构模式,适用于基于事件驱动的应用框架。MVP中的M和V分别对应MVC的Model和View,而P(Presenter)代替了Controller。
在MVP模式中,能够与Model直接进行交互的仅限于Presenter,View只能通过Presenter间接地调用Model。Model的独立性在这里得到真正的体现,他不仅仅与可视化元素的呈现无关,与UI处理逻辑(Presenter)也无关。
MVP不仅仅避免了View和Model之间的深度耦合,更进一步的降低了Presenter对View的依赖。Presenter依赖的是一个抽象化的View,即具体View实现的接口IView,这带来的最直接的好处就是使定义在Presenter中的UI处理逻辑变得易于测试。由于Presenter对View的依赖行为定义在接口IView中,我们只需要Mock一个实现了该接口的View就能对Presenter进行测试。
Presenter和Model之间的交互很清晰,他仅仅体现为Presenter对Model的单向调用View和Presenter之间该采用怎样的交互方式是整个MVP的核心,MVP针对关注点分离的初衷能否体现在具体的应用中,很大程度上取决于两者之间的交互方式是否正确。按照View和Presenter之间的交互方式,以及View本身的职责范围,将MVP分为PV(Passive View)和SC(SuperVising Controller)两种模式。
原文地址:http://blog.csdn.net/yejinwei1220/article/details/45622861