当前位置:首页 » 安卓系统 » androidmvp

androidmvp

发布时间: 2022-09-22 20:18:49

Ⅰ android mvp是什么意思

MVP模式是MVC模式在Android上的一种变体,要介绍MVP就得先介绍MVC。在MVC模式中,Activity应该是属于View这一层。而实质上,它既承担了View,同时也包含一些Controller的东西在里面。这对于开发与维护来说不太友好,耦合度大高了。把Activity的View和Controller抽离出来就变成了View和Presenter,这就是MVP模式。
在Android项目中,Activity和Fragment占据了大部分的开发工作。如果有一种设计模式(或者说代码结构)专门是为优化Activity和Fragment的代码而产生的,你说这种模式重要不?这就是MVP设计模式。
按照MVC的分层,Activity和Fragment(后面只说Activity)应该属于View层,用于展示UI界面,以及接收用户的输入,此外还要承担一些生命周期的工作。Activity是在Android开发中充当非常重要的角色,特别是TA的生命周期的功能,所以开发的时候我们经常把一些业务逻辑直接写在Activity里面,这非常直观方便,代价就是Activity会越来越臃肿,超过1000行代码是常有的事,而且如果是一些可以通用的业务逻辑(比如用户登录),写在具体的Activity里就意味着这个逻辑不能复用了。如果有进行代码重构经验的人,看到1000+行的类肯定会有所顾虑。因此,Activity不仅承担了View的角色,还承担了一部分的Controller角色,这样一来V和C就耦合在一起了,虽然这样写方便,但是如果业务调整的话,要维护起来就难了,而且在一个臃肿的Activity类查找业务逻辑的代码也会非常蛋疼,所以看起来有必要在Activity中,把View和Controller抽离开来,而这就是MVP模式的工作了。

Ⅱ Android MVP 开发模式有哪些优缺点

MVP概念:
MVP(Model-View-Presenter) 是总所周知MVC模式的一个演变,主要目的都是划分模块职责,降低模块耦合,易测试,提高代码复用。
1、层级责任
2、Model:负责数据的检索,持久化等操作。
3、View: 负责UI的绘制和用户的交互。
4、Presenter: 作为Model和View的中间协调部分,负责两者之间的业务逻辑处理。
MVC模式的区别
1、MVC模式允许View层和Model层直接通讯。
2、当某个View的功能很复杂的时候,View和Model的耦合度可能会很高。
3、MVP模式就没有这个问题,View会抽象出来一系列操作UI的接口。
4、Presenter拿到的都是其他两个层级的接口来做业务逻辑的处理,这样不仅可以使View和Model之间的耦合度降低,还可以更易得进行单元测试。
MVP的优缺点
1、优点:降低耦合,层级职责更明显,易于单元测试。
2、缺点:造成类数量爆炸,代码复杂度和学习成本高,在某些场景下presenter的复用会产生接口冗余。

Ⅲ Android MVP模式中,一个Activity对应多个Presenter时该怎样抽象

View 和 Presenter 之间是有协议约束的.
假设现有V1, P1, V2, P2, 一个ActivityA对应了P1/P2的功能, 也应该说明它实现了V1/V2接口, 此时应该有PresenterA 实现了P1, P2. 这就是完整的VP的协议就对上了.
这里既然多个页面可能用到同样的功能, 最简单的方式节点使用多继承(一个Persenter实现ABCD四个接口), 这样不管Activity实际上用的都是同一个Persenter.如果确定现在已经有实现了, 按楼上的方法实现一个代理就可以了.

实在要实现多个Presenter的话, 可以定义几个不同的类, 来支持不同多个Presenter的扩展:

class BaseMvpActivity1<P> extent BaseActivity {
P presenter;
}
class BaseMvpActivity2<P1, P2> extent BaseActivity {
P1 presenter1;
P2 presenter2;
}

但不推荐这样做(失去抽象, 违反依赖倒置原则); 更不推荐使用数组或List(基类使用泛型方便编译器检查, 数组或List在具体使用时需要做类型的强转)

Ⅳ Android MVP 开发模式有哪些优缺点

MVP开发模式的优点:
1.项目结构清晰,解耦程度高,每个功能相互之间独立,可单独测试。

2.代码维护性高,代码出线Bug,能够快速定位。

3.功能扩展性强,增加业务功能时,并不需要去修改原始代码,只需增加相应的业务代码即可。

MVP开发模式的缺点:
1.项目会出现大量的presenter,大大增加了类的数量。
2.因为Activity会持有presenter的引用,使用不当的话,容易出现内存泄露问题。

Ⅳ Android为什么要使用MVP

你好!在Android上逻辑接口和数据存取是紧耦合的,这个问题可以看看CursorAdapter这个例子,它既融合了适配器,同时也有显示的成分,而cursor很大程度上应该是数据数据存取层的。
MVP模式可以让显示界面和数据分离,开发的应用可以分离至少三层,这样也可以进行独立测试。有了MVP就可以从Activity中分离大部分代码,而且不用单元测试可以对每个模块进行单独测试了。希望帮助你

Ⅵ Android MVP 开发模式有哪些优缺点

android MVP开发模式的优点

1)View和Model之间的耦合度降低,使其更关注自身业务逻辑,结构清晰,维护方便;

2)便于单元测试;

3)代码复用率提高;

4)代码框架更适用于快速迭代开发;

android MVP开发模式的缺点

任何开发模式都是有利也有弊的,毕竟世间完美的事物还是少见的。上面提到了MVP模式的有点,那就不得不说其还存在的缺点,或者说不足更准确吧。

MVP模式的不足,主要表现在每个view都有presenter ,类相对比较多。

Ⅶ Android MVP 开发模式有哪些优缺点

MVP开发模式的优点: 1.项目结构清晰,解耦程度高,每个功能相互之间独立,可单独测试。 2.代码维护性高,代码出线Bug,能够快速定位。 3.功能扩展性强,增加业务功能时,并不需要去修改原始代码,只需增加相应的业务代码即可

Ⅷ 如何实现自己的Android MVP框架

前言MVP作为一种MVC的演化版本在Android开发中受到了越来越多的关注,但在项目开发中选择一种这样的软件设计模式需保持慎重心态,一旦确定使用MVP作为你App的开发模式那么你就最好坚持做下去,如果在使用MVP模式开发过程中发现问题而且坑越来越大,这时你想用MVC等来重新设计的话基本上就等于推倒重来了。要知道在Android上MVP在现在为止并没有统一的标准或者框架,不像SSH这三个成熟稳重强而有力的三剑客支持推动着JavaEE的开发,所以在运用MVP时一定要做好自己的理解,并且尽量预知自己App各模块的需求(客户说改改改,我们就改改改:-()以便提前做好充分的设计工作。当然MVP既然能出现那么必然有它的优点的,不然谁会理会这个冒出来的东西,下面就对Android中MVP做一些阐述。MVP简介相信大家对MVC都是比较熟悉了:M-Model-模型、V-View-视图、C-Controller-控制器,MVP作为MVC的演化版本,也是作为用户界面(用户层)的实现模式,那么类似的MVP所对应的意义:M-Model-模型、V-View-视图、P-Presenter-表示器。从MVC和MVP两者结合来看,Controlller/Presenter在MVC/MVP中都起着逻辑控制处理的角色,起着控制各业务流程的作用。而MVP与MVC最不同的一点是M与V是不直接关联的也是就Model与View不存在直接关系,这两者之间间隔着的是Presenter层,其负责调控View与Model之间的间接交互,MVP的结构图如下所示,对于这个图理解即可而不必限于其中的条条框框,毕竟在不同的场景下多少会有些出入的。在Android中很重要的一点就是对UI的操作基本上需要异步进行也就是在MainThread中才能操作UI,所以对View与Model的切断分离是合理的。此外Presenter与View、Model的交互使用接口定义交互操作可以进一步达到松耦合也可以通过接口更加方便地进行单元测试。MVP结构图MVP之ModelModel是用户界面需要显示数据的抽象,也可以理解为从业务数据(结果)那里到用户界面的抽象(Businessrule,dataaccess,modelclasses)。本文Demo为了简单处理就直接把业务放到了对应的Model之中。MVP之View视图这一层体现的很轻薄,负责显示数据、提供友好界面跟用户交互就行。MVP下Activity和Fragment体现在了这一层,Activity一般也就做加载UI视图、设置监听再交由Presenter处理的一些工作,所以也就需要持有相应Presenter的引用。例如,Activity上滚动列表时隐藏或者显示Acionbar(Toolbar),这样的UI逻辑时也应该在这一层。另外在View上输入的数据做一些判断时,例如,EditText的输入数据,假如是简单的非空判断则可以作为View层的逻辑,而当需要对EditText的数据进行更复杂的比较时,如从数据库获取本地数据进行判断时明显需要经过Model层才能返回了,所以这些细节需要自己掂量。MVP之PresenterPresenter这一层处理着程序各种逻辑的分发,收到View层UI上的反馈命令、定时命令、系统命令等指令后分发处理逻辑交由业务层做具体的业务操作,然后将得到的Model给View显示。演示demo动手写起代码来才有更好的感觉。demo很简单,还是上个图更直观,输入城市的代号,点击按钮获取城市的天气信息然后显示出来,网络操作使用Volley框架,解析用Gson,其它的就手写了。整个项目的包设计如下:包结构项目效果预览包图中明显的三层:Model包、Presenter包、UI包,其中,三者都实现各自的结构,Model为WeatherModel、Presenter为WeatherPresenter、View为Weather,那么具体实现类就是impl包里的了,View层的即为Activity。此外的app和util包无关紧要可以不看。可以看到采用MVP设计后项目明显多了很多东西,这也是不可避免的,使用原始方法可以使项目开起来简单些但是以后还有维护呢、测试呢、加功能呢、。。。entity里的实体属性基本上对应json里的这些属性了,代码不贴了View里面的接口:publicinterfaceWeatherView{voidshowLoading();voidhideLoading();voidshowError();voidsetWeatherInfo(Weatherweather);}WeatherPresenter的接口:{/***获取天气的逻辑*/voidgetWeather(StringcityNO);}WeatherModel接口:publicinterfaceWeatherModel{voidloadWeather(StringcityNO,OnWeatherListenerlistener);}prestener里面还有个OnWeatherListener,其在Presenter层实现,给Model层回调,更改View层的状态,确保Model层不直接操作View层。如果没有这一接口在WeatherPresenterImpl实现的话,WeatherPresenterImpl只有View和Model的引用那么Model怎么把结果告诉View呢?当然这只是一种解决方案,在实际项目中可以使用Dagger、EventBus、Otto等第三方框架结合进来达到更加松耦合的设计。{/***成功时回调**@paramweather*/voidonSuccess(Weatherweather);/***失败时回调,简单处理,没做什么*/voidonError();}所以demo的代码流程:Activity做了一些UI初始化的东西并需要实例化对应WeatherPresenter的引用和实现WeatherView的接口,监听界面动作,Go按钮按下后即接收到查询天气的事件,在onClick里接收到即通过WeatherPresenter的引用把它交给WeatherPresenter处理。WeatherPresenter接收到了查询天气的逻辑就知道要查询天气了,然后把查询天气的具体业务实现交给WeatherModel去实现同时把WeatherListener即WeatherPresenter自己传给WeatherModel。WeatherModel进行查询天气业务后即把结果通过WeatherListener回调通知WeatherPresenter,WeatherPresenter再把结果返回给View层的Activity,最后Activity显示结果。就这样,拍砖之处请拍。End采用哪种软件设计模式都是为了达到如下目的,找到合适的加以运用就是最好的:易于维护易于测试松耦合度复用性高健壮稳定------------------------------------------------------------------------------------以上内容均参考互联网,希望以上知识对您有所帮助,

Ⅸ Android MVP 开发模式有哪些优缺点

MVP概念:

MVP(Model-View-Presenter) 是总所周知MVC模式的一个演变,主要目的都是划分模块职责,降低模块耦合,易测试,提高代码复用。

  • 层级责任

  1. Model:负责数据的检索,持久化等操作。

  2. View: 负责UI的绘制和用户的交互。

  3. Presenter: 作为Model和View的中间协调部分,负责两者之间的业务逻辑处理。

  • MVC模式的区别

  1. MVC模式允许View层和Model层直接通讯。

  2. 当某个View的功能很复杂的时候,View和Model的耦合度可能会很高。

  3. MVP模式就没有这个问题,View会抽象出来一系列操作UI的接口。

  4. Presenter拿到的都是其他两个层级的接口来做业务逻辑的处理,这样不仅可以使View和Model之间的耦合度降低,还可以更易得进行单元测试。

  • MVP的优缺点

  1. 优点:降低耦合,层级职责更明显,易于单元测试。

  2. 缺点:造成类数量爆炸,代码复杂度和学习成本高,在某些场景下presenter的复用会产生接口冗余。

Ⅹ Android MVP模式中,一个Activity对应多个Presenter时该怎样抽象

View 和 Presenter 之间是有协议约束的.
假设现有V1, P1, V2, P2, 一个ActivityA对应了P1/P2的功能, 也应该说明它实现了V1/V2接口, 此时应该有PresenterA 实现了P1, P2. 这就是完整的VP的协议就对上了.
这里既然多个页面可能用到同样的功能, 最简单的方式我节点使用多继承(一个Persenter实现ABCD四个接口), 这样不管Activity实际上用的都是同一个Persenter.如果确定现在已经有实现了, 按楼上的方法实现一个代理就可以了.

实在要实现多个Presenter的话, 可以定义几个不同的类, 来支持不同多个Presenter的扩展:

class BaseMvpActivity1<P> extent BaseActivity {
P presenter;
}
class BaseMvpActivity2<P1, P2> extent BaseActivity {
P1 presenter1;
P2 presenter2;
}

但不推荐这样做(失去抽象, 违反依赖倒置原则); 更不推荐使用数组或List(基类使用泛型方便编译器检查, 数组或List在具体使用时需要做类型的强转)

热点内容
谷能压缩机 发布:2025-01-13 15:44:30 浏览:412
电脑电脑直连通讯ftp 发布:2025-01-13 15:38:03 浏览:717
nvm存储 发布:2025-01-13 15:36:19 浏览:552
京东架构师缓存经验 发布:2025-01-13 15:33:00 浏览:726
android图片颜色 发布:2025-01-13 15:26:09 浏览:268
国家税务总局电脑服务器 发布:2025-01-13 15:10:24 浏览:596
金立老款机的开机密码是多少 发布:2025-01-13 15:04:45 浏览:456
湖南网上办税初始密码多少 发布:2025-01-13 15:02:49 浏览:417
怎么使用笔记本连接服务器 发布:2025-01-13 15:02:48 浏览:705
长城cs75plus选哪个配置 发布:2025-01-13 14:54:05 浏览:22