Rx系列学习之旅(一)--MVP架构篇
来源:互联网 发布:破壁机推荐 知乎 编辑:程序博客网 时间:2024/06/05 08:25
一:MVP实现逻辑图:
注解:
View:负责绘制UI元素、与用户进行交互(在Android中体现为Activity)
Model:负责存储、检索、操纵数据(有时也实现一个Modelinterface用来降低耦合)
Presenter:作为View与Model交互的中间纽带,处理与用户交互的负责逻辑。
View interface:需要View实现的接口,View通过Viewinterface与Presenter进行交互,降低耦合,方便进行单元测试
二:架构MVP框架:
1.分包
model、
view、
presenter(contract)
2.先处理baseview、basepresenter
public interface BaseView { void showLoading(); void showError(String msg); void dismissLoading();}
public interface BasePresenter{}
3.处理contract契约类public interface RecommendContract { interface View extends BaseView { void showResult(List<AppInfo> datas); void showNodata(); } interface Presenter extends BasePresenter{ void requestDatas(); }}4.处理model数据层
public class RecommendModel { private ApiService mApiService; public RecommendModel(ApiService apiService){ this.mApiService =apiService; } public void getApps(Callback<PageBean<AppInfo>> callback){ mApiService.getApps("{'page':0}").enqueue(callback); }}5.处理presenter层
public class RecommendPresenter implements RecommendContract.Presenter { private RecommendModel mModel; private RecommendContract.View mView; public RecommendPresenter(RecommendContract.View mView,RecommendModel model) { this.mView = mView; mModel = model; } @Override public void requestDatas() { mModel.getApps(new Callback<PageBean<AppInfo>>() { @Override public void onResponse(Call<PageBean<AppInfo>> call, Response<PageBean<AppInfo>> response) { if(response !=null){ mView.showResult(response.body().getDatas()); } else{ mView.showNodata(); } } @Override public void onFailure(Call<PageBean<AppInfo>> call, Throwable t) { mView.showError(t.getMessage()); } }); }}6.处理view层
public class WelcomeActivity extends AppCompatActivity implements RecommendContract.View { @Inject//dagger2的依赖注入 RecommendContract.Presenter mPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_welcome); DaggerRecommendCompenent.builder().appCompenent(((MyApplication)getApplication()).getAppCompenent()) .recommendModule(new RecommendModule(this)).build().inject(this); mPresenter.requestDatas(); } @Override public void showLoading() { } @Override public void showError(String msg) { Toast.makeText(this,"showError",Toast.LENGTH_SHORT).show(); } @Override public void dismissLoading() { } @Override public void showResult(List<AppInfo> datas) { Toast.makeText(this,datas.get(0).getDisplayName(),Toast.LENGTH_SHORT).show(); } @Override public void showNodata() { Toast.makeText(this,"showNodata",Toast.LENGTH_SHORT).show(); }}
0 0
- Rx系列学习之旅(一)--MVP架构篇
- Rx系列学习之旅(二)--MVP+Dagger2
- Rx系列学习之旅(三)--Base基类的实现
- Rx系列学习
- android之MVP架构一
- Rx系列初探RxJava(一)
- Android架构学习MVC、MVP、MVVM(一)
- Android架构设计---MVP模式第(一)篇之基本认实
- 【项目架构】Android MVP 和MVVM框架模式 学习实例Demo之mvp篇
- Android 开发 RX系列 之 RxBinding
- Android架构(一)MVP全解析
- Android架构(一)MVP全解析
- Android架构(一)MVP全解析
- Android中的MVP架构总结(一)
- Android架构(一)MVP全解析
- Android MVP架构学习(附demo)
- android MVP架构学习
- android MVP架构学习
- MySQL日常总结
- mysql多表的创建
- IntelliJ IDEA中如何显示和关闭----工具栏,目录栏
- LeetCode 213:House Robber II
- 了解JAVA
- Rx系列学习之旅(一)--MVP架构篇
- 尚学堂白贺翔java互联网架构师视频教程下载
- 文章标题
- AOJ 6 Hero In Maze 【BFS】
- C++第4次作业-输出星号图
- 题目1137:浮点数加法 九度OJ
- getopt 函数
- Java回调机制(一)
- VS2013中,stream != null