我是靠谱客的博主 兴奋大雁,最近开发中收集的这篇文章主要介绍学习android-architecture之mvp,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

项目地址https://github.com/googlesamples/android-architecture.git
git分支: todo-mvp

分析基础代码

在一个基础架构里,定义baseView,basePresenter,针对具体的一个业务逻辑可以把分别扩展了baseView和basePresenter的两个接口组合成一个业务接口;这样就可以实现面对接口编程;
baseView接口的方法 setPresenter(T presenter);
basePresenter接口的方法 void start();

  • AddEditTaskContract接口:
public interface AddEditTaskContract {
interface View extends BaseView<Presenter> {
void showEmptyTaskError();
void showTasksList();
void setTitle(String title);
void setDescription(String description);
boolean isActive();
}
interface Presenter extends BasePresenter {
void saveTask(String title, String description);
void populateTask();
boolean isDataMissing();
}
}

分析这个合约类的定义,显然view和presenter的复用并不是首要的考虑点,这么设计我分析是为了封装添加TodoTask这个业务需求,内部的view接口implements 基类view时,范型的参数类型用了Presenter,这也是很巧妙的一个地方,因为Presenter也定义在合约类接口内部,所以同一个合约类内部的view使用的Presenter默认也是合约类内部的Presenter。

使用方法:

一般是用fragment实现特定合约的view接口,在Activity里初始化fragment,然后构造对应合约的presenter;把fragmebt作为合约的view传入presenter的构造器,presenter的构造器里会调用view的setPresenter方法,这样view 和presenter实际上是双向的引用;

尽管view接口知道presenter的存在,presenter接口不知道view的存在,但是在实现presenter时,明显是持有了view的引用;这样view和presenter还是耦合在一起的;

单元测试:

  • 测试view
  • 测试presenter

最后

以上就是兴奋大雁为你收集整理的学习android-architecture之mvp的全部内容,希望文章能够帮你解决学习android-architecture之mvp所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部