学之广在于不倦,不倦在于固志。 ——晋·葛洪
(学问的渊博在于学习时不知道厌倦,而学习不知厌倦在于有坚定的目标)
拉几篇学习:
第一篇 :鸿神的分析--Nice
第二篇 :比较到位的一篇--虽然历史久远
第三篇 :简书--分析很到位的一篇
第四篇 :MVP谷歌官方中文分析篇
第五篇 :MVP谷歌官方的分析及实战
第六篇 :MVP优化及实战篇
第七篇 :MVP官方分析篇
第八篇 :MVP官方分析篇
第九篇 :MVP很6的一篇,参考学习
第十篇 :新手的福利--强烈推荐
第十一篇 :项目优化之MVP封装
第十二篇 :点击打开链接
第十三篇 :很形象很生动
在MVP模式里通常包含4个要素:
MVP职责解析:
M(Model)模型:表示数据模型和业务逻辑(business logic)。模型并不总是DataSet,DataTable之类的东西,它代表着一类组件(components)或类(class),这些组件或类可以向外部提供数据,同时也能从外部获取数据并将这些数据存储在某个地方。简单的理解,可以把模型想象成“外观类(facade class)”。译注:这里的外观是指“外观模式”中所说的外观。外观的一般作用是为一个复杂的子系统提供高层次的简单易用的访问接口,可以参看下面的图来理解它的原理:
model层主要负责:
· 从网络,数据库,文件,传感器,第三方等数据源读写数据。
· 对外部的数据类型进行解析转换为APP内部数据交由上层处理。
· 对数据的临时存储,管理,协调上层数据请求。
V(View)视图:将数据呈现给用户。一般的视图都只是包含用户界面(UI),而不包含界面逻辑。比如,Asp.net中包含控件的页面(page)就是一个视图。视图可以从模型中读取数据,但是不能修改或更新模型。
view 层主要负责:
· 提供UI交互
· 在presenter的控制下修改UI。
· 将业务事件交由presenter处理。
注意: View层不存储数据,不与Model层交互。
在Android中View层一般是Activity、Fragment、View(控件)、ViewGroup(布局等)等。
P(Presenter)层现器:作为View与Model交互的中间纽带,处理与用户交互的负责逻辑。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:学习之路艰辛,力求一个萝卜一个坑!!!