首先放上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中添加MVPActivity(下边的连接地址),链接如下:
链接: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层自己设计哈
网友评论