美文网首页
MVP新手尝试以及自动生成 View、Presenter

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

作者: ccDown | 来源:发表于2017-08-14 09:58 被阅读0次

    首先放上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层自己设计哈

    相关文章

      网友评论

          本文标题:MVP新手尝试以及自动生成 View、Presenter

          本文链接:https://www.haomeiwen.com/subject/qilflxtx.html