Android MVP

来源:互联网 发布:网络传播音乐 编辑:程序博客网 时间:2024/05/21 10:13

MVP  Model View Presenter


1. MVC  Model View Controller

关于探讨MVC思想的早期文章:The original MVC reports (1978年)

  • Model:数据,包括数据本身和处理数据的逻辑。
  • View :数据的表现形式,将数据及数据的变化呈现给用户。
  • Controller:数据的获取,如用户的输入,将用户的命令转化成消息传递给model或view,是一个数据信息转换传递者。

现在有的MVC模式框架已经写成了:

      将Controller 放在了Model和View之间。

      Controller将消息传递给Model,Model处理完数据后是先将数据的变化通知给Controller,再由Controller来通知View来变化视图的。

      即Controller成为在Model和View之间双向传递数据的中间协调者。

      关系为: View <——> Controller <——> Model(注:名字称谓变化,关键是核心思想,即低耦合,高复用,易测试,好维护)

      和MVP非常类似。


2.MVP


区别于传统MVC模式在于 将Model和View通过Presenter隔开,不允许Model与View直接通信,而是通过Presenter中间者传递信息。


Model    (饭菜)   


数据加工处理  数据的获取 解析 存储 分发 增删改查数据源:内存 磁盘 网络


Presenter (服务生) 


将数据与视图信息之间的传递 将View传来的需求进行一定校验后交给Model处理,再把处理后的结果返回View,将逻辑代码包揽,减轻了Activity的负担


View (客官、用户)


控制与用户交互的显示 一个View可以对应多个或一个Presenter Activity Fragment


在Android中,MVP模式把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成Presenter接口,Model类未变化。


3.具体实例用法:

    3.1 入门:常见的用户登录例子

项目结构:


说明:

1 创建 IView 接口,把所有视图逻辑的接口都放在这里,其实现类是当前的 Activity/Fragment。

2 创建 IPresenter 接口,把所有业务逻辑的接口都放在这里,并创建它的实现类 PresenterCompl(在这里可以方便地查看业务功能,由于接口可以有多种实现所以也方便写单元测试)。

3 Activity 里包含了一个 IPresenter,而 PresenterCompl 里又包含了一个 IView 并且依赖了 Model。Activity 里只保留对 IPresenter 的调用,其它工作全部留到 PresenterCompl 中实现。

4 Model 并不是必须有的,但是一定会有 View 和 Presenter。

5 即MVP 的主要特点就是把 Activity 里的许多逻辑都抽离到 View 和 Presenter 接口中去,并由具体的实现类来完成。所以这种写法会多了许多 IView 和 IPresenter 的接口。

Github连接:MVPDemo01



















0 0
原创粉丝点击