2018年4月

前言

之前第一篇说了MVP模式的结构,这第二篇就开始写一些基础的代码吧!最近本人的Android课要做一个课程设计,其实要求也不算特别多,只要实现一些基本功能界面即可。也正好在看MVP,所以就想着要不就用MVP来写一个高仿(山寨)微信呗。所以从这一篇开始我就用微信来做MVP的练习代码了。

补一个上一篇上传不了的MVP模式图
请输入图片描述


实现结果

今天就先用简单的mvp代码写一个列表,先上效果图(有点丑,没怎么调样式,以后再改!)
screenshot-1524753359804.jpg


View层

  • View层主要由一个接口实现,通过该接口将数据设置到视图中
    view层.png

Model层

  • Model层是获取数据层,也是通过定义一个接口,然后再新建一个类去实现这个接口从而获取数据。(这里使用假数据,创建一个list列表作为数据源返回)
    Model层.png

Present层

  • Present层之前也说过它是M和V的桥梁,通过一个类来实现所定义的接口。而这个方法第一是通过Model层调用获取数据的方法,第二是将数据回调到View层当中。所以您会看到它先调用M层的initData方法然后再将所得的list回调到V层的setData方法中。
    Present层.png

实现视图的Fragment

  • 在Fragment中就是实现View层接口的地方,首先通过实例P层的类去调用loadData方法,实际上就是调用M层去获取数据然后回调给V层。然后在V层也就是setData方法获取到数据。
    WXFragment.png

最后

这个就是利用MVP实现一个简单到不能再简单的列表,通过这个就能初步的理解MVP模式的结构了。
最后推荐一个贴代码神器:请输入链接描述
用来贴代码超高逼格!!!!

前言

上一周上安卓课无聊(让我一个写了这么久安卓的人听老师教imageview很痛苦的好不好!),刷着手机的公众号看见郭霖发的已调关于Android应用架构模式的文章。看了开头觉得蛮有兴趣的,正好最近也写代码的时候老是在想怎么把代码写得整洁好看。然后我就继续看下去了,之后我就了解到了android有一种叫MVP的架构。感觉自己可以学习一下就开始研究了,今天第一篇就分析一下MVP模式到底是什么吧!

感兴趣的可以看看郭霖的介绍:
MVC、MVP、MVVM,谈谈我对Android应用架构的理解 请输入链接描述


什么是MVP模式

MVP,这里每个字母都是一个单词,简单来说就是分开三种不同的层次去完成一个页面的开发(不是王者荣耀那种mvp啦老铁!)

  • M:Model,主要负责的业务逻辑处理,数据获取。譬如我在安卓开发中很常用的在后台服务器通过接口拿数据或者在本地的文件缓存获取数据的操作
  • V:View,视图的意思嘛。就是用来处理界面的ui的。
  • P:Presenter,主要用来做V层和M层的联系操作,也就是说业务数据逻辑和视图ui的连接桥梁

MVP的工作方式

以下是我总结的4步流程

1. 首先在界面创建的时候,例如Activity在OnCreate的时候就会调用View层的接口
2. View层就会调用Presenter中的相应操作
3. 然后Presenter就会调用相对应的Model层的逻辑去获取相应的数据
4. 当Presenter获取到数据后就会回调给View层然后就是在界面显示出来了
通过这4步之后就实现了视图和数据绑定的逻辑,这和平时在界面创建的时候初始化ui控件然后通过一个方法去后台或者本地缓存获取数据显示到窗口是一个道理的。区别就在于采用MVP后一个界面的代码就变得更加模块化了,代码分离的难度也会降低。


初步了解的感觉

  • 优点:
    优点就很明显啦,上面也说过了就是各功能模块化嘛,符合低耦合的理念。
  • 缺点:
    因为每一层都是一个接口在管理不同的逻辑,代码在感官上就是不停的跳来跳去,这样可能对一些不够熟悉java代码的人来说(俗称:小白)可能会不太友好。

本来想把初步学习的代码也写一下,奈何项目有任务,代码就留在下一篇了。
最后吐槽一下:为什么上传不了图片!很难受!

Just Test