首页天道酬勤mvp模式是什么意思啊,android mvp框架搭建

mvp模式是什么意思啊,android mvp框架搭建

admin 05-04 03:55 104次浏览

简称: MVP全名: Model-View-Presenter; MVP是从经典机型MVC进化而来的,基本想法是共通的。 Controller/Presenter负责逻辑处理,模型提供数据,View负责显示。

中文名称

MVP模式

外语名称

MVP模式的进化

MVC

方式

直接用Model读取数据

逻辑

Presenter

MVP模式概述

编辑

MVP从MVC进化而来,通过演示巧妙地分离视图和模型。 在此模式下,视图通常由演示文稿初始化,呈现用户界面(UI ),接受用户发出的命令,但不逻辑处理用户输入,并将用户输入转发到演示文稿每个视图通常对应于一个演示文稿,但具有更复杂业务逻辑的视图可能对应于多个演示文稿。 每个演示文稿都可以完成该视图的部分业务处理,以降低单个演示文稿的复杂性,并在具有相同业务需求的多个视图中重用单个演示文稿,从而提高单个演示文稿的重用度。 演示文稿包含用于处理视图和与模型交互以获取或更新数据的大多数演示逻辑。 模型描述系统的处理逻辑,模型对显示器和视图一无所知。 [1]

MVP均称为Model-View-Presenter,Model提供数据,View负责显示,控制器/presenter负责逻辑处理。 MVP和MVC有很大的区别。 在MVP中,View不直接使用模型。 它们之间的通信通过presenter (在MVC中为控制器)进行,所有交互都发生在presenter内部,在MVC中View直接从Model读取数据[2]

MVP模式的优点

编辑

表示层在MVP模式下的优势体现在以下三个方面:

1、View与Model完全隔离。

因此,Model和View之间有良好的松散耦合设计。 这意味着即使Model或View的一方发生变化,如果交互接口不变化,另一方也无需改变上述变化。 这提高了Model层业务逻辑的灵活性和可复用性。

2、Presenter与View的具体实现技术无关。

也就是说,即使使用Windows表单、WPF、Web表单等用户接口构建技术中的任意一个来实现视图层,也不需要改变系统的其他部分。 为了确保同时支持B/S和C/S部署体系结构,APP应用程序可以适应在同一模型层用多种技术构建的View层。

3、可以进行View的模拟测试。

传统上,由于View和Model之间的紧密耦合,在同时开发Model和View之前,无法测试其中一个。 出于同样的原因,很难对View或Model进行单元测试。 现在,MVP模式解决了所有问题。 在MVP模式下,View和Model之间没有直接依赖关系,开发人员可以使用模拟对象注入测试之一。 [3]

MVP模式MVC MVP

编辑

MVP是从经典机型MVC进化而来的,基本想法是共通的。 控制器/presenter负责逻辑处理,

MVP模式模型提供数据,View负责显示。 作为新机型,MVP和MVC有很大的区别。 在MVP中,View不直接使用模型。 它们之间的通信通过presenter (在MVC中为控制器)进行,所有交互都发生在presenter内部,在MVC中View直接来自Model

在MVC中,View可以直接访问模型。 因此,View包含模型信息,必然也包含业务逻辑。 在MVC模型中,关注模型的不变性,但同时对模型有多个不同的表示和视图。 因此,在MVC模型中,模型不依赖于视图,但视图依赖于模型。 不仅如此,由于View中实现了一些业务逻辑,因此很难更改View,至少这些业务逻辑是不可重用的。 [2]

MVP模式问题改进方法

编辑

在MVP中,Presenter将Model和View完全分离,主要程序逻辑在Presenter中实现。 另外,Presenter与具体的View不直接相关,通过定义的接口进行交互,可以在变更View时保持Presenter不变,即重新使用。 另外,通过创建用于测试的View并模拟用户的各种操作,可以实现Presenter的测试,而无需使用自动化测试工具。 即使Model和View未完成,也可以通过编写MockObject (即实现了Model和View接口,但没有具体内容)来测试Presenter逻辑。 在MVP中,APP应用程序的逻辑主要在Presenter中实现,其中View是薄层。 因此,提出了基于用户story首先设计和开发Presenter的PresenterFirst的设计模型。 在这个过程中,View很简单,可以将信息

显示清楚就可以了。在后面,根据需要再随便更改View,而对Presenter没有任何的影响了。如果要实现的UI比较复杂,而且相关的显示逻辑还跟Model有关系,就可以在View和Presenter之间放置一个Adapter。由这个Adapter来访问Model和View,避免两者之间的关联。而同时,因为Adapter实现了View的接口,从而可以保证与Presenter之间接口的不变。这样就可以保证View和Presenter之间接口的简洁,又不失去UI的灵活性。在MVP模式里,View只应该有简单的Set/Get的方法,用户输入和设置界面显示的内容,除此就不应该有更多的内容,绝不容许直接访问Model--这就是与MVC很大的不同之处。

MVP模式优点

编辑

MVP与MVC的主要区别是View与Model不直接交互,而是通过与Presenter来完成交互,这样可以修改视图而不影响模型,达到解耦的目的,实现了Model和View真正的完全分离。视图的变化总是比较频繁,将业务逻辑抽取出来,放在表示器中实现,使模块职责划分明显,层次清晰,一个表示器能复用于多个视图,而不需要更改表示器的逻辑(当然是在该视图的改动不影响业务逻辑的前提下),这增加了程序的复用性。数据的处理由模型层完成,隐藏了数据,在数据显示时,表示器可以对数据进行访问控制,提高数据的安全性。以前的Android开发是难以进行单元测试的,但是随着项目变得复杂,测试时保证应用质量的关键,MVP模式中,表示器对视图是通过接口进行的,可以利用测试驱动,模拟出视图对象,实现视图相对于表示器的接口,就可以对表示层进行不依赖于UI环境的单元测试了,这大大降低了Android应用开发中的业务逻辑测试难度和复杂度。MVP模式的引入,视图层完全不依赖与模型层,相当于将视图从特定的业务场景中脱离出来,做到了对业务完全不可知的状态,因此可以将视图层组件化,提供一系列接口供表示层操作,这样就可以做出高度可复用的视图组件了。[1]

MVP模式缺点

编辑

MVP的明显缺点是增加了代码的复杂度,特别是针对小型Android应用的开发,会使程序冗余。Presenter中除了应用逻辑以外,还有大量的View->Model,Model->View的手动同步逻辑,会导致Presenter臃肿,维护困难。视图的渲染过程也会放在Presenter中,造成视图与Presenter交互过于频繁,如果某特定视图的渲染很多,就会造成Presenter与该视图联系过于紧密,一旦该视图需要变更,那么Presenter也需要变更了,不能如预期的那样降低耦合度和增加复用性。[1]

参考资料

1.

tdgz.MVP模式在Android中的应用研究[J].软件,2016,37(6):75-78.

2.

ssdtn,jmdhmg.浅谈MVP设计模式[J].科学咨询,2014,(28):71-71.

3.

zydxd.基于Android的开发模式研究[J].环球市场,2018,(15):388.

C to C#笔记证书格式 全球动态加速 PathX
mvp模式是什么意思啊,Android 框架 最小可行性产品mvp 概念,mvp最小化可行产品例子
相关内容