十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
实现Android MVP框架
创新互联公司是网站建设技术企业,为成都企业提供专业的做网站、成都做网站,网站设计,网站制作,网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制适合企业的网站。10多年品质,值得信赖!
一个经典的 Android MVC 框架项目的代码结构
MVP减负activity ,承担了 view 层和 controller 层的工作
View 层的 ActivityActivity 里包含: View 层的对外接口 MainView, P层 Presenter
对外接口 MainView 文件
P层代码
文件
DataManager.java
TaskDataSource.java
TaskDataSourceImpl.java
TaskDataSourceTestImpl.java
Android 版方案
通过新建子线程进行IO读写获取数据
以主线程的 Looper 将结果通过传回主线程进行渲染和展示。
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的复用会产生接口冗余。
在Presenter层请求网络或者处理延迟操作过程中,用户关闭当前Activity就会造成空指针,所以每次调用View的时候都要对View做空判断。
下面使用动态代理解决空指针问题
你好!在Android上逻辑接口和数据存取是紧耦合的,这个问题可以看看CursorAdapter这个例子,它既融合了适配器,同时也有显示的成分,而cursor很大程度上应该是数据数据存取层的。
MVP模式可以让显示界面和数据分离,开发的应用可以分离至少三层,这样也可以进行独立测试。有了MVP就可以从Activity中分离大部分代码,而且不用单元测试可以对每个模块进行单独测试了。希望帮助你
MVC、MVP和MVVM是常见的三种架构设计模式,当前MVP和MVVM的使用相对比较广泛,当然MVC也并没有过时之说。
MVC (Model-View-Controller, 模型-视图-控制器),标准的MVC是这个样子的:
简述:
缺点:
MVP (Model-View-Presenter) 是MVC的演化版本,几个主要部分如下:
简述:
解释:
优点:
缺点:
MVVM 是 Model-View-ViewModel 的简写。和 MVP 模式相比,MVVM 模式用 ViewModel 替换了 Presenter ,其他层基本上与 MVP 模式一致,ViewModel 可以理解成 是 View 的数据模型和 Presenter 的合体。MVVM 就是将其中的 View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。
简述:
缺点:
参考: