文章目录

      • 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地址

更多相关文章

  1. Android通知(Notification)使用详解
  2. Android(安卓)Notification 兼容3.0到8.0
  3. Android(安卓)4.4.2 禁用通知栏下拉
  4. android 让通知不被清除或者点击后不消失
  5. Android(安卓)UI之Notification
  6. Android(安卓)8.1(API级别27)特性总结
  7. Android入门笔记 - 界面开发 - Notification, NotificationManag
  8. Android(安卓)通知Notification
  9. Android5.0通知变化浅析-最近在Android5.1设备上发现一个问题:通

随机推荐

  1. 为什么我说 Android 很糟糕
  2. 最简单的ViewFlipper实现图片跟随手势滑
  3. Android 9-patch
  4. [Android]Android中R文件的丢失问题
  5. 从零开始Android
  6. Motorola 第四季為 Milestone 2 推出 And
  7. Android Socket 开发
  8. android 的 Gallery 的简单使用
  9. Android(安卓)Binder 机制之ServiceManag
  10. 解决办法Android中Error generating fina