您好!欢迎来到源码码网

Android MVP如何解决MVC的问题?

  • 软件教程
  • 来源:源码码网
  • 编辑:admin
  • 时间:2020-12-16 22:52
  • 阅读:577

MVP如何解决MVC的问题?

在MVP中:

  1. Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。其中的View是很薄的一层。

  2. Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时候可以保持Presenter的不变,即重用!

  3. 当我们将其中复杂的逻辑处理移至另外的一个类(Presneter)中时,Activity其实就是MVP模式中View,它负责UI元素的初始化,建立UI元素与Presenter的关联(Listener之类),同时自己也会处理一些简单的逻辑(复杂的逻辑交由Presenter处理).

    这里写图片描述

1、方便测试:

  • 回想一下你在开发Android应用时是如何对代码逻辑进行单元测试的?是否每次都要将应用部署到Android模拟器或真机上,然后通过模拟用户操作进行测试?然而由于Android平台的特性,每次部署都耗费了大量的时间,这直接导致开发效率的降低。而在MVP模式中,处理复杂逻辑的Presenter是通过interface与View(Activity)进行交互的,这说明了什么?说明我们可以通过自定义类实现这个interface来模拟Activity的行为对Presenter进行单元测试,省去了大量的部署及测试的时间。

  • 我们还可以编写测试用的View,模拟用户的各种操作,从而实现对Presenter的测试 —— 而不需要使用自动化的测试工具。

  • 我们甚至可以在Model和View都没有完成时候,就可以通过编写Mock Object(即实现了Model和View的接口,但没有具体的内容的)来测试Presenter的逻辑。

2、如果View很简单:

  • 有人提出了Presenter First的设计模式,就是根据User Story来首先设计和开发Presenter。在这个过程中,能够把信息显示清楚就可以了。在后面,根据需要再随便更改View,而对Presenter没有任何的影响了。

3、如果UI比较复杂,而且相关的显示逻辑还跟Model有关系,就可以在View和Presenter之间放置一个Adapter。

  • 由这个 Adapter来访问Model和View,避免两者之间的关联。

  • 而同时,因为Adapter实现了View的接口,从而可以保证与Presenter之间接口的不变。

这样就可以保证View和Presenter之间接口的简洁,又不失去UI的灵活性。

在MVP模式里,View只应该有简单的Set/Get的方法,用户输入和设置界面显示的内容,除此就不应该有更多的内容,绝不容许直接访问Model —— 这就是与MVC很大的不同之处。


特别声明:
1、如无特殊说明,内容均为本站原创发布,转载请注明出处;
2、部分转载文章已注明出处,转载目的为学习和交流,如有侵犯,请联系客服删除;
3、编辑非《源码码网》的文章均由用户编辑发布,不代表本站立场,如涉及侵犯,请联系删除;
全部评论(0)
推荐阅读
  • Mybatis-plus中@TableField(fill = FieldFill.INSERT)注解不生效
  • Mybatis-plus中@TableField(fill = FieldFill.INSERT)注解不生效
  • 在Spring-boot+Mybatis-plus项目开发中,在引入后@TableField(fill=FieldFill.INSERT)@TableField(fill=FieldFill.UPDATE)   这个两个注解后,可以实现数据库的创建时间和更新时间自动添加,当使用这两个注解时,需要手动配置并实现 MetaObjectHandler类。具体配置代码如下:public&n
  • 源码教程
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2025-06-23 21:54
  • 阅读:235
  • Element-plus中组件状态回显绑定错误解决方案
  • Element-plus中组件状态回显绑定错误解决方案
  • 问题描述:Element-plus中组件状态回显问题,当返回的数据类型为number时,属性值也能正常返回,但是属性与值不自动绑定,根本原因可能是vue与Element-plus的版本兼容问题。VUE版本:3.5.13Elment-plus:2.9.10前端代码:
  • 源码教程
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2025-06-22 11:37
  • 阅读:325
  • VUE父级路由没有内容的解决方案
  • VUE父级路由没有内容的解决方案
  • VUE开发中对于父级路由(如 /settings)没有内容”的问题,这是VueRouter中嵌套路由的常见情况。以下是几种专业解决方案:方案一:为父路由添加默认组件(推荐){  path: ”/settings”,  component: LayoutView,  // 关键点:添加一个默认
  • 源码教程
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2025-06-17 12:42
  • 阅读:249
  • 推荐一个开源免费商用的icon图标库
  • 推荐一个开源免费商用的icon图标库
  • 1. RemixIcon的授权协议许可证类型:RemixIcon使用 ApacheLicense2.0。允许商业用途:可以免费用于商业项目(包括SaaS、电商系统、企业内部系统等)。无需署名:不像某些图标库(如FontAwesome免费版要求注明归属),RemixIcon 不强制要求在项目中声明来源。允许修改:可以随意修改图标样式或颜色以适应项目需求。2. 在商业系统中的使用
  • 源码教程
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2025-06-13 12:40
  • 阅读:418
联系客服
源码代售 源码咨询 素材咨询 联系客服
029-84538663
手机版

扫一扫进手机版
返回顶部