MVP设计模式

    学之广在于不倦,不倦在于固志。 ——晋·葛洪­

   (学问的渊博在于学习时不知道厌倦,而学习不知厌倦在于有坚定的目标)

   

    拉几篇学习:

              第一篇 :鸿神的分析--Nice

              第二篇 :比较到位的一篇--虽然历史久远

              第三篇 :简书--分析很到位的一篇

              第四篇 :MVP谷歌官方中文分析篇

              第五篇 :MVP谷歌官方的分析及实战

              第六篇 :MVP优化及实战篇

              第七篇 :MVP官方分析篇

              第八篇 :MVP官方分析篇

              第九篇 :MVP很6的一篇,参考学习

              第十篇 :新手的福利--强烈推荐

            第十一篇 :项目优化之MVP封装

            第十二篇 :点击打开链接

            第十三篇 :很形象很生动


   在MVP模式里通常包含4个要素:

               (1)View:负责绘制UI元素、与用户进行交互(在Android中体现为Activity);
               (2)View interface:需要View实现的接口,View通过View interface与Presenter进行交互,降低耦合,方便进行单元测试;
               (3)Model:负责存储、检索、操纵数据(有时也实现一个Model interface用来降低耦合);
               (4)Presenter:作为View与Model交互的中间纽带,处理与用户交互的负责逻辑。
 

      

      


      MVP职责解析:

              M(Model)模型:表示数据模型和业务逻辑(business logic)。模型并不总是DataSetDataTable之类的东西,它代表着一类组件(components)或类(class),这些组件或类可以向外部提供数据,同时也能从外部获取数据并将这些数据存储在某个地方。简单的理解,可以把模型想象成外观类(facade class)”。译注:这里的外观是指外观模式中所说的外观。外观的一般作用是为一个复杂的子系统提供高层次的简单易用的访问接口,可以参看下面的图来理解它的原理:

        model层主要负责:

            · 从网络,数据库,文件,传感器,第三方等数据源读写数据。

            · 对外部的数据类型进行解析转换为APP内部数据交由上层处理。

            · 对数据的临时存储,管理,协调上层数据请求。


              V(View)视图:将数据呈现给用户。一般的视图都只是包含用户界面(UI),而不包含界面逻辑。比如,Asp.net中包含控件的页面(page)就是一个视图。视图可以从模型中读取数据,但是不能修改或更新模型。

        view 层主要负责:

            · 提供UI交互

            · presenter的控制下修改UI

            · 将业务事件交由presenter处理。

             注意: View层不存储数据,不与Model层交互。

             在AndroidView层一般是ActivityFragmentView(控件)、ViewGroup(布局等)等。


            P(Presenter)层现器:作为ViewModel交互的中间纽带,处理与用户交互的负责逻辑。Presenter包含了根据用户在视图中的行为去更新模型的逻辑。视图仅仅只是将用户的行为告知Presenter,而Presenter负责从视图中取得数据然后发送给模型。


       注意:

                ---> Activity其实就是MVP模式中View,它负责UI元素的初始化,建立UI元素与Presenter的关联(Listener之类),同时自己也会处理一些简单的逻辑(复杂的逻辑交由Presenter处理)

                ---> 对于View的接口:

                      用来定义View的行为,定义各种视图的变化,如下:

                             该操作需要什么?(getUserName, getPassword)

                             该操作的结果,对应的反馈?(toMainActivity, showFailedError)

                             该操作过程中对应的友好的交互?(showLoading, hideLoading)

                 ---> Presenter翻译的意思是主持人,也就是主持场合,控制节奏的意思。在这时Presenter就负责具体的业务逻辑,请求数据,把数据送到Model,或者监听Model的数据变化,接受View层的动作,负责通过通知View层的视图变化

                 ---> Model层定义Modle.interface,这个是用来定义数据层发生变化时的通知接口,因为Model不能直接与View交互,所以它与Presenter交互,然后再通过Presenter间接达到与View的交互


      

        Last:学习之路艰辛,力求一个萝卜一个坑!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值