Android(安卓)MVP架构
16lz
2021-01-26
文章目录
- MVC
- MVC事件流向图
- MVC(Model-View-Controller)关系
- MVC执行流程
- MVC缺点
- MVP
- MVP事件流向图
- MVP(Model-View-Presenter)关系
- MVP执行流程
- MVP优点
- MVP基本实现
- MVP+RxJava+Retrofit
MVC
MVC事件流向图
MVC(Model-View-Controller)关系
类型 | 说明 |
---|---|
Model 模型层 | 负责数据处理,如网络请求,数据库处理,IO操作等 |
View 视图层 | 负责界面展示,对应XML布局和View等视图代码 |
Controller 控制层 | 负责逻辑控制,通常有Activity/Fragment承担 |
MVC执行流程
在MVC架构中,View需要持有Controller,Controller需要持有Model,Model需要持有View。
View获取到用户操作,通知给Controller,Controller进行业务逻辑处理,通知给Model进行数据处理,Model更新数据通过Controller通知View刷新界面。
MVC缺点
- 在Android中,Activity/Fragment承担View和Controller两个角色,导致Activity/Fragment代码较为臃肿
- Model和View没有解耦,导致后期维护困难
- 增加代码结构的复杂性
MVP
MVP事件流向图
MVP(Model-View-Presenter)关系
类型 | 说明 |
---|---|
Model 模型层 | 负责数据处理 |
View 视图层 | 负责界面展示 |
Presenter 通知层 | 连接Model和View的桥梁,负责逻辑控制 |
MVP执行流程
在MVP架构中,View和Model不能直接交互,而是使用Presenter作为View和Model之间的桥梁,其中Presenter同时持有View和Model,View持有Presenter。
View获取到用户操作,通知给Presenter,Presenter进行业务逻辑处理,通知Model进行数据更新,Model更新数据后通知给Presenter,Presenter再通知View刷新界面。
MVP优点
- 让Model与View的彻底耦合
- 代码结构清晰,极大简化了Activity/Fragment
MVP基本实现
└── mvp_sample ├── MainActivity.java ├── base │ ├── BaseActivity.java │ ├── BaseApplication.java │ ├── BaseFragment.java │ ├── BaseMvpActivity.java │ ├── BaseMvpFragment.java │ ├── BasePresenter.java │ └── interfaces │ ├── IPresenter.java │ └── IView.java ├── mvc │ └── ArticlesActivity.java ├── mvp_activity │ ├── ArticlesContract.java │ ├── ArticlesModel.java │ ├── ArticlesMvpActivity.java │ └── ArticlesPresenter.java └── mvp_fragment ├── ArticlesContract.java ├── ArticlesFragment.java ├── ArticlesModel.java ├── ArticlesPresenter.java └── FragmentWithActivity.java
github地址
MVP+RxJava+Retrofit
├── base│ ├── BaseActivity.java│ ├── BaseApplication.java│ ├── BaseMvpActivity.java│ ├── BaseObserver.java│ ├── BasePresenter.java│ ├── BaseResponse.java│ └── interfaces│ ├── IPresenter.java│ └── IView.java├── bean│ └── ArticlesBean.java├── http│ ├── ApiException.java│ ├── ExceptionHandler.java│ └── HttpManager.java└── mvp ├── ApiService.java ├── ArticlesActivity.java ├── ArticlesContract.java └── ArticlesPresenter.java
github地址
更多相关文章
- Android通知(Notification)使用详解
- Android(安卓)Notification 兼容3.0到8.0
- Android(安卓)4.4.2 禁用通知栏下拉
- android 让通知不被清除或者点击后不消失
- Android(安卓)UI之Notification
- Android(安卓)8.1(API级别27)特性总结
- Android入门笔记 - 界面开发 - Notification, NotificationManag
- Android(安卓)通知Notification
- Android5.0通知变化浅析-最近在Android5.1设备上发现一个问题:通