android中MVP模式--此模式可以更简单地测试
来源:互联网 发布:淘宝上盐酸美沙酮片 编辑:程序博客网 时间:2024/06/05 18:08
此文转载《打造高质量Android应用-Android开发必知的50个诀窍》
这本书还不错,有很多开发中的小技巧和细节。大家可以买来看看,不贵,在当当网上价钱好像是44元。
以下为内容:
读者很可能听说过MVC(模型-视图-控制器)模式,并且已经在其他编程框架中使用过该模式。当尝试用更优的方法测试Android代码的时候,我发现了MVP(模型-视图-主导器)模式。MVP模式和MVC模式的根本区分是:在MVP模式中,视图中的业务逻辑被放入主导器中,主导器通过接口与视图交互。
下面以一个启动界面为例子,介绍这个模式。
我们会在启动界面中检查网络连接是否正常,并显示一个进度条。如果网络正常就跳转到另一个Activity。否则,就向用户显示一条错误信息。
要创建启动界面,需要一个负责在模型和视图间交互的主导器。在本例中,主导器有两个功能:一个功能用于判断网络是否连接,另一个功能用于控制视图。
主导器中会用到一个模型类ConnectionStatus,该类实现了IConnectionStatus接口,该接口中只定义了一个判断网络是否在线的方动法。
public interface IConnectionStatus {
boolean isOnline();
}
读者可能会意识到:负责控制视图的代码位于Activity中,而且这个Activity实现了ISplashView接口。主导器会通过该接口控制应用程序。ISplashView接口的源码如下所示:
public interface ISplashView {
void showProgress();
void hideProgress();
void showNoInetErrorMsg();
void moveToMainView();
}
因为我们是在Android平台上开发应用程序,因此首先需要创建视图,然后我们会把视图的控制权交给主导器。代码如下:
public class SplashActivity extends Activity implements IsplashView {
private SplashPresenter mPresenter;
@Override
public void onCreate(Bundle savedInstanceState) {
mPresenter = new SplashPresenter();
mPresenter.setView(this);
}
@Override
protected void onResume() {
super.onResume();
mPresenter.didFinishLoading();
}
}
首先,需要初始化Activity,然后创建用于完成所有交互操作的主导器,并将当前Activity设置给主导器;最后,重写onResume()方法,通知主导器当前视图已经准备完毕,可能把控件权交给主导器了。
主导器的代码比较简单,其didFinishLoading()方法的源码如下所示:
public void didFinishLoading() {
if(mConnectionStatus.isOnline()) {
view.moveToMainView();
} else {
view.hideProgress();
view.showNoInetErrorMsg();
}
}
以上为书中的文章,由于此书并没有给出完整的源码。所以,我根据我的理解做了一个小demo,如果有错误不合理的地方,请大神们指出。
这博客怎么上传文件呀。。。真蛋疼。。。
0 0
- android中MVP模式--此模式可以更简单地测试
- Android中MVP模式的简单实现
- Android中Mvp模式的简单示例
- Android中MVP模式的简单应用
- android中MVP模式
- android中MVP模式
- android中MVP模式
- android中MVP模式
- android中MVP模式
- Android MVP模式 简单使用方法
- Android 开发模式MVP模式简单运用
- 简单的Android中MVP模式的应用
- 【转载】android中MVP模式
- Android开发中 MVP模式
- android中mvp模式使用
- 优雅地使用MVP模式
- Android中MVP模式、MVC模式
- Retrofit+RxJava在MVP模式中优雅地处理异常
- 完全零基础开始学习iOS开发(1)
- 连续 两个 LEFT JOIN LEFT JOIN
- 链表(10)----判断两个单链表是否相交
- Linux shell mac 地址转换 convert with sed
- JQuery Easy UI datagrid中使用合计行
- android中MVP模式--此模式可以更简单地测试
- 安卓应用程序的基础介绍
- 如何进行软件架构设计?
- WindowManager.LayoutParams(上)
- ARC(Automatic Reference Counting )技术概述
- 9.4.2.1 在 F# 中实现接口
- Android 焦点调试
- 贝叶斯公式详解
- MySQL中information_schema是什么