Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MVP在android中的优势

MVP在android中的优势
EN

Stack Overflow用户
提问于 2016-11-23 05:45:30
回答 6查看 7.2K关注 0票数 9

我是android开发的新手,我想在我的项目中实现MVP,但是我不知道使用MVP的优点是什么,所以请告诉我在android中使用MVP的优点是什么。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-11-25 05:13:09

在我看来,你的问题有两部分:

  1. MVP的总体优势
  2. MVP在Android中的优势

实现MVP (或类似的体系结构模式,如MVC、MVVM、MVVC等)的一般优点。包括:

  1. 明确各组成部分之间的职责分工。这种分离允许更容易地理解和维护代码库。
  2. 模块化。模块化允许您切换到视图组件的不同实现,以便完全更改应用程序的UI,而所有其他组件都保持不变。
  3. 更简单的测试。由于组件之间有明确定义的边界,因此在隔离状态下测试每个组件变得更加容易(例如,模拟其他组件)。

以上是MVx在任何平台上的普遍优势。这也适用于安卓系统,但在安卓系统中,跟随MVx的收益更高,原因如下:

  1. Android框架不鼓励开发人员编写干净的代码(至少可以这么说)。在这种情况下,坚持一套明确的实践尤其重要。
  2. 在Android上单元测试是非常困难的(在几个方面)。因此,如果您希望代码是可测试的,那么在组件之间有一个清晰的边界并能够模拟它们是特别重要的。

如果您想在Android中使用MVP路径,也可以查看这些资源:

票数 25
EN

Stack Overflow用户

发布于 2018-04-18 06:06:52

从技术上讲,这些优点是可测试性、可维护性、可扩展性等,正如其他人所指出的。我在那个这里上写了一篇完整的文章。

但是,正如您所说的,您是android的新手,我觉得在构建应用程序时使用架构模式的一个具体例子将帮助您更好地理解它的重要性:

假设一个应用程序有一个EditText字段,在这个字段中输入一个地址和一个查找按钮,这将导致搜索结果页面。

如果您不使用MVP或任何其他适当的体系结构,则必须将所有内容放入您的ActivityFragment中。

代码语言:javascript
运行
AI代码解释
复制
findButton.setOnClickListener(new View.OnClickListener() {
    @Override    
    public void onClick(View view) {
        callTheNetworkSearchMethod();    }
});

现在,如果您想更改搜索地址的端点API,怎么办?通过这种方式,您必须更改所有的Activity,即使是端点API。但这是否合理呢?绝对不是那么回事。

在团队项目中,当首席开发人员回顾您开发的特性时,她发现只需要添加一个端点api更改就可以更改整个Activity。她必须通过扫描整个Activity,才能知道你只改变了一个端点。另外,如果另一个开发人员正在对Activity做一个小的更改,您甚至可能会遇到冲突,并且不得不花一些时间来解决它。

通过使用MVP,您可以获得上述所有功能和许多其他增强功能,其中您只需编写:

代码语言:javascript
运行
AI代码解释
复制
findButton.setOnClickListener(new View.OnClickListener() {
    @Override    
    public void onClick(View view) {
        mPresenter.doWhenFindButtonIsClicked();    }
});

现在,如果您想在单击“查找”按钮时更改任何内容,您将在演示器中这样做,视图将保持原样。

这是使用架构模式最重要的方面之一,称为“关注点分离”。

如果您有兴趣了解MVP如何帮助android项目,以及一个完整的示例应用程序,请查看我的MVP文章

票数 1
EN

Stack Overflow用户

发布于 2017-08-28 23:19:13

  1. 如果您想知道android、Mvc、MvvM之间的区别,请参阅领域https://academy.realm.io/posts/eric-maxwell-mvc-mvp-and-mvvm-on-android/的解释。
  2. 如果您想比较三种模式,请参阅这个神奇的完整博客https://thinkmobiles.com/blog/mvp-vs-mvvm-android-patterns/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40766185

复制
相关文章
Android全面的屏幕适配方案解析(四)__今日头条适配方案
之前三篇把屏幕适配概念梳理了还讲解了列举的其中四种适配方案,还没有看过的童鞋可以先参考这三篇: Android全面的屏幕适配方案解析(一)__屏幕适配概念梳理 Android全面的屏幕适配方案解析(二)__宽高限定符屏幕适配 Android全面的屏幕适配方案解析(三)__sw限定符适配方案 Android全面的屏幕适配方案解析(四)__今日头条适配方案
SoullessCoder
2022/03/23
1.6K0
Android全面的屏幕适配方案解析(四)__今日头条适配方案
Android获取屏幕分辨率及DisplayMetrics简介[通俗易懂]
Android 可设置为随着窗口大小调整缩放比例,但即便如此,手机程序设计人员还是必须知道手机屏幕的边界,以避免缩放造成的布局变形问题。
全栈程序员站长
2022/07/20
4.2K0
Android获取屏幕分辨率及DisplayMetrics简介[通俗易懂]
Android智能平板应用,界面适配的另一种轻量级方法
各种设备种类和尺寸那么多,基于一种原型设计好的界面,换到另一种设备上去若不适配全乱套了。好在还是有很多方案的,这减少了不少的开发工作量。最流行的就是头条的方案了,使用也超级简单。然而,如果不想引入,还可以简单的一个工具类实现,原理类似于头条的方案。
杨永贞
2022/04/13
8810
Android智能平板应用,界面适配的另一种轻量级方法
浅扒Android动态设置字体大小
Android开发中,TextView类的控件应该说是很常用了。一般来说我们是通过android:textSize="20sp" 来设置字体大小,但是很多时候也需要动态设置字体大小,调用也很简单:
JarvanMo
2018/09/06
3.5K0
038android初级篇之android UI中的单位
density值表示每英寸有多少个显示点 而分辨率表示设备长和宽上的像素的个数。
上善若水.夏
2018/09/28
4310
Android UI 开发里的尺寸单位理解
在学习 Android UI 开发的初期,经常被一些常用概念如 dp、sp 和它们与 px 的换算等虐,要避免被虐,最好的方法当然是知其所以然,再见到它们就胸中有料心不慌了。
零式的天空
2022/03/28
4150
Android UI 开发里的尺寸单位理解
在学习 Android UI 开发的初期,经常被一些常用概念如 dp、sp 和它们与 px 的换算等虐,要避免被虐,最好的方法当然是知其所以然,再见到它们就胸中有料心不慌了。
mzlogin
2020/04/16
1.3K0
Android UI 开发里的尺寸单位理解
Android屏幕适配框架(一)
核心思路:利用ui设计稿的尺寸和手机自身尺寸得出缩放比,再将控件宽高处理后设置到控件上。性能方面会多渲染一次控件 ui设计稿高和宽这边假设是1920*1080,具体根据实际设计稿来设置 //ui图上的宽高 private static final int BASE_WIDTH = 1080; private static final int BASE_HEIGHT = 1920; // ui给的图不包含状态栏,后面要减去状态栏的高度 定义一些变量 //设备的真实宽高 private static int d
aruba
2020/07/03
8320
Android图片处理--缩放
把ImageView或者PhotoView的对象名直接添加到display中就OK 了。
cMusketeer
2018/06/17
2.8K0
Android 屏幕适配之框架(AndroidAutoSize)(今日头条)适配
https://github.com/JessYanCoding/AndroidAutoSize
全栈程序员站长
2022/09/05
1.6K0
Android 屏幕适配之框架(AndroidAutoSize)(今日头条)适配
Android的分辨率
这些术语都是指屏幕的分辨率。 VGA:Video Graphics Array,即:显示绘图矩阵,相当于640×480 像素; HVGA:Half-size VGA;即:VGA的一半,分辨率为480×320; QVGA:Quarter VGA;即:VGA的四分之一,分辨率为320×240; WVGA:Wide Video Graphics Array;即:扩大的VGA,分辨率为800×480像素;
forrestlin
2022/04/02
1.2K0
Android绘图机制与处理技巧-更新中
Android手机屏幕,不管是分辨率还是大小,五花八门。。。要想在不同的屏幕上保持绘图的准确性,需要对屏幕有充分的认识.
小小工匠
2021/08/16
7150
如何让一套代码完美适配各种屏幕?
区别于iOS,android设备有不同的分辨率大小以及不同厂商的系统,目前市场的分辨率可以看下相关统计。
CRMEB商城源码
2022/07/19
1.2K0
android缩放动画中心缩放_安卓动画缩放调到多少比较好
备注:由于我的图片是导出视频再用PS转换成的gif,故效率上有所损失,实际动画效果和速度比图片的快。
全栈程序员站长
2022/11/04
2.4K0
android缩放动画中心缩放_安卓动画缩放调到多少比较好
Android TabLayout修改选中字体大小
style的方式只能改整体的大小,修改选中字体大小就需要用到CustomView了
yechaoa
2022/06/10
2.2K0
Android TabLayout修改选中字体大小
Android 设置字体大小不跟随系统
最近发现如果将手机系统的字体设置为大字体,应用中的字体将跟随系统变大,而布局大部分我们根据设计出图写死了大小,这就会导致文字显示不全。 究其原因到底是因为什么呢? Google了一下,发现原来我们为字体设置的大小为SP,而SP,不仅根据像素进行改变,还会根据系统设置的大小而改变,所以如果我们布局写死的地方,可以将字体的大小也设置位dp。 但是估计等我们发现这个问题的时候,我们的应用可能已经完成或者已经进行了一大部分了,那么怎么解决这个问题呢? 看大家的编码习惯了,如果你的应用进行了抽取,所有的Activity,都继承抽取出来的BaseActivity的话那么添加如下代码,即可解决上述问题。
longzeqiu
2019/08/14
5.7K0
WebStorm如何设置字体大小
由于最近要练习一些js代码,特地装了WebStorm,但是发现字体太小,因此将已知的两种方法整理出来。
全栈程序员站长
2022/07/01
5.2K0
WebStorm如何设置字体大小
点击加载更多

相似问题

matplotlib字体与LaTeX字体不匹配

11

text.usetex为'true‘的轴字体不使用设置字体

21

使用'text.usetex‘= true时,pdf中嵌入的字体错误

12

使用LaTeX的Matplotlib字体通用字体

14

将"matplotlib.rcParams['text.usetex'] = True“设置为在标签中使用LaTeX和使用德语区域设置使用逗号时出现问题

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档