MVP新手尝试以及自动生成 View、Presenter

来源:互联网 发布:给mac安装win7 编辑:程序博客网 时间:2024/06/10 00:27

首先放上GitHub链接:https://github.com/soulListener/MVP-master.git

MVPActivity链接:

首先来看MVP各自负责什么:

Model,负责定义数据(解决什么是数据)

Presenter, 负责在Model和View之间,从model里取出数据,格式化后在View上展示(解决如何把数据和用户界面放在一起)。

View,负责担任一个被动界面,用于展示数据。(解决如何展示数据)

如何组合

三者又是如何组合起来的呢?

很显然Presenter作为中间者,它是同时拥有View和Model的引用的,为了在它们之间起到桥梁作用,即Presenter会主动和View和Model进行通信。

而Model和View必须是完全隔离的,不允许两者之间互相通信,保持对彼此的不感知,这样的好处是你彻底将数据和展示分离来开,并且可以独立的为Model去做测试。

Model在三者中是独立性最高的,Model不应该拥有对View的引用,而且Model也不需要保存对Presenter的引用,对于Presenter而已,Model只需要提供接口,等着Presenter来调用时返回相应数据即可

而Presenter和Model的关系也应该是基于接口来通信,这样才能把Model和Presenter的耦合度也降到最低,那么在需要改变Model内部实现,甚至彻底替换Model的时候,Presenter则是无需随之改变的。这样做带来的另一个好处就是你可以通过Mock一个Model来对Presenter以及View做模拟测试了,从而提高了可测试性。

那么View和Presenter的关系呢?View是需要拥有对Presenter的引用,但仅仅是为了将用户的操作和事件立即传递给Presenter,为了让View和Presenter耦合较低,View也只应该通过接口与Presenter通信,从而保证View是完全被动的,一方面它由用户的操作触发来和Presenter通信,另一方面它完全受Presenter控制,唯一需要做的事情就是如何展示数据。

简要总结三者之间的关系是:View和Model之间没有联系,View通过接口向Presenter来传递用户操作,Model不主动和Presenter联系,被动的等着Presenter来调用其接口,Presenter通过接口和View/Model来联系。

View <- 接口 <- Presenter ->接口 -> Model

View -> 接口 -> Presenter <- 接口 <- Model


接下来是重头戏

同学们每次编辑一个界面需要写好多东西是不是麻烦的要死,

自动生成MVP模式的V层、 P层是不是很厉害

使用方法:

在AndroidStudio编译器目录下的Android Studio\plugins\android\lib\templates\activities中添加MVP文件,链接如下:

链接:http://pan.baidu.com/s/1misWLmg 密码:e5ht

然后在工程目录下复制两个包,like this



链接如下(两个包在同一等级):

链接:http://pan.baidu.com/s/1slfpva9 密码:6cip

链接:http://pan.baidu.com/s/1bps9jhd 密码:e95q

随后重启AndroidStudio编译器 此时新建activity时候会出现MVPActivity这个选项


mvpActivity



然后自动生成presenter和view,model层自己设计哈


阅读全文
0 0
原创粉丝点击