android 的MVP 架构与LookLook实例分析

来源:未知作者:编程 日期:2020/03/02 06:06 浏览:

引言

据说MVP格局开垦的带缓存网络爬虫,采纳最风靡框架搭建,干货多多

网络爬虫超级多校友都不素不相识,可是在Android上玩那几个照旧少之甚少的

汇集近期风行的框架和沉凝以一种轻便易领悟的法子完成,方便大家学习

关于供给怎么着的自己就背着了,对于盘算结业类其余同室学会那个你会感到结业体系特别easy

源码下载地址 程序还在不断维护中 下一步筹算开拓在线阅读 风野趣的能够一齐 心仪的仇人接待star

APK下载 无需付费下载小说 学习的同期 还能够取得广大的干货

作品目的

MVP在android中的原理深入分析MVP+Retrofit+中华Vxjava在类型中实战剖判 架构经验分享

一、MVC与MVP

MVC全名是Model View Controller,如图,是模型(model卡塔尔(قطر‎-视图(view卡塔尔-控制器(controller卡塔尔(قطر‎的缩写,一种软件设计表率,用一种专门的学问逻辑、数据、分界面展现分离的格局组织代码,在改革和特性化定制分界面及顾客人机联作的同一时候,无需再行编排职业逻辑。

里头M层处理多少,业务逻辑等;V层处理分界面包车型客车显得结果;C层起到大桥的法力,来支配V层和M层通信以此来完毕分手视图突显和业务逻辑层。

图片 1

需求

互连网爬虫能干嘛?

  • 取得相应网页有个别有价值多太史存到谐和服务器本身行使(非常多厂家的数据部这么玩 然而人家叫收罗 哈哈 多么温馨的单词卡塔尔

  • 还会有正是上边说的完成学业类别没有必要搭建后台也不须要多少援救用别人的就好了

  • 对此某个坏坏的人的话还是能做些羞羞的软件LCRapidDevelop里面集成了摄像播放 拿去用 小编是雷锋同志

MVP简介

android 中的MVC架构

Android中分界面部分也采取了当下可比盛行的MVC框架,在Android中:

视图层(View)

日常选择XML文件举行界面的描述,那几个XML能够领略为AndroidApp的View。使用的时候能够十分平价的引进。同期有接济早先时期分界面包车型大巴改动。逻辑中与界面临应的id不转移则代码不用改正,大大抓好了代码的可维护性。

控制层(Controller)

Android的调节层的沉重日常落在了众多的Activity的肩上。那句话也就暗含了不用在Activity中写代码,要通过Activity交割Model业务逻辑层处理,这样做的此外三个缘由是Android中的Actiivity的响应时间是5s,假若耗费时间的操作放在这里处,程序就相当的轻松被回笼掉。

模型层(Model)

作者们针对职业模型,创建的数据结会谈血脉相同的类,就足以知晓为AndroidApp的Model,Model是与View无关,而与职业有关的(谢谢@Xander的任课)。对数据库的操作、对互连网等的操作都应该在Model里面管理,当然对事情总括等操作也是必需放在的该层的。正是应用程序中二进制的多少。

首先让我们看看效果 No picture you say a jb? gif录像效果倒霉 将就点看

图片 2首页图片 3书库图片 4搜索图片 5下载图片 6下载管理

先说说MVC分层:
  • View:对应于布局文件
  • Model:业务逻辑和实人体模型型
  • Controllor:对应于Activity 看起来的确像那么回事,然则细细的考虑这些View对应于结构文件,其实能做的作业超少,实际上关于该结构文件中的数据绑定的操作,事件管理的代码都在Activity中,变成了Activity既像View又像Controller(当然了Data-Binder的面世,或者会让View更像View吧)。
  • 当将架设改为MVP今后,Presenter的面世,将Actvity视为View层,Presenter担当完结View层与Model层的相互影响。现在是这样的:
    • View 对应于Activity,担任View的绘图以至与客商人机联作 Model 仍为事情逻辑和实体模型 Presenter 担当完毕View于Model间的相互

MVP架构

MVP从更早的MVC框架蜕变过来,与MVC有必然的雷同性:Controller/Presenter肩负逻辑的处理,Model提供数据,View负担突显。

图片 7

MVP框架由3部分组成:View担当突显,Presenter担任逻辑管理,Model提供数据。在MVP情势里平淡无奇饱含3个成分(加上View interface是4个):

View:肩负绘制UI成分、与顾客展开相互(在Android中反映为ActivityState of Qatar

Model:肩负累积、检索、操纵数据(有时也兑现二个Model interface用来收缩耦合卡塔尔(قطر‎

Presenter:作为View与Model交互作用的高级中学级纽带,管理与客商交互作用的担任逻辑。

*View interface:供给View完毕的接口,View通过View interface与Presenter实行交互作用,缩小耦合,方便开展单元测量检验

三种格局的首要差异

(最要紧分歧)View与Model并不直接相互作用,而是通过与Presenter人机联作来与Model直接人机联作。而在MVC中View能够与Model间接相互作用

常常View与Presenter是一对一的,但复杂的View大概绑定多少个Presenter来管理逻辑。而Controller是依据行为的,何况能够被八个View分享,Controller可以承当调节显示哪个View

Presenter与View的相互作用是通过接口来开展的,更便于足够单元测量检验。

UI层日常包罗Activity,Fragment,Adapter等直接和UI相关的类,UI层的Activity在开发银行之后实例化相应的Presenter,App的调节权后移,由UI转移到Presenter,两者之间的通讯通过布罗兹Cast、Handler可能接口完成,只传递事件和结果。

举个差十分的少的例证,UI层布告逻辑层(Presenter)客商点击了三个Button,逻辑层(Presenter)本人调控应该用什么作为开展响应,该找哪些模型(Model)去做这事,最后逻辑层(Presenter)将做到的结果更新到UI层。

MVC、MVP、MVVM区别

图片 8

MVVM能够算是MVP的进步版,在那之中的VM是ViewModel的缩写,ViewModel能够领略成是View的数据模型和Presenter的合体,ViewModel和View之间的相互影响通过Data Binding完毕,而Data Binding能够完成双向的竞相,这就使得视图和调控层之间的耦合程度进一层减弱,关心点分离更为彻底,同临时候缓和了Activity的压力。

三者的异样在于如何粘附View和Model,实现客商的竞相操作以至改造公告

Controller

Controller选择View的操作事件,依照事件差异,或然调用Model的接口实行数量操作,大概实行View的跳转,进而也意味三个Controller能够对应多个View。Controller对View的兑现不太关切,只会被动地收到,Model的数码变动不经过Controller间接公告View,平常View接收观察者情势监听Model的变型。

Presenter

Presenter与Controller相近,选择View的通令,对Model实行操作;与Controller差异的是Presenter会反效果于View,Model的改变文告首先被Presenter取得,然后Presenter再去立异View。二个Presenter只对应于二个View。依照Presenter和View对逻辑代码分担的水平不一,这种方式又有二种情状:Passive View和Supervisor Controller。

ViewModel

留意这里的“Model”指的是View的Model,跟MVVM中的三个Model不是一次事。所谓View的Model正是含有View的一对数量属性和操作的这么五个东东,这种格局的关键工夫就是数额绑定(data binding),View的变化会直接影响ViewModel,ViewModel的生成照旧内容也会一贯反映在View上。这种格局其实是框架替应用开荒者做了部分做事,开荒者只必要相当少的代码就能够促成相比较复杂的互相。

参照链接:Android App的规划构造

还会有正是体系的构造 看看本人是怎么玩转MVP的

图片 9花色构造

MVP格局的核心绪想

MVP是模型(Model)、视图(View)、主持人(Presenter)的缩写,分别代表项目中3个不相同的模块。

  • 模型(Model):担负管理数量的加载或许存款和储蓄,举个例子从网络或地点[数据库]
    (http://lib.csdn.net/base/mysql卡塔尔(قطر‎获取数据等;

  • 视图(View):担当分界面数据的体现,与用户展开互相;

  • 主持人(Presenter):也正是和睦者,是模型与视图之间的大桥,将模型与视图抽离开来。

常常来讲图所示,

  • View与Model并不直接相互影响,而是利用Presenter作为View与Model之间的桥梁。
  • 中间Presenter中而且具备Viwe层以致Model层的Interface的援用,
  • View层持有Presenter层Interface的引用。当View层有个别界面必要出示某个数据的时候,首先会调用Presenter层的有个别接口,然后Presenter层会调用Model层恳求数据
  • 当Model层数据加载成功未来会调用Presenter层的回调方法通告Presenter层数据加载完成
  • 最后Presenter层再调用View层的接口将加载后的数码展现给客户。
  • 那正是MVP情势的100%大旨进程。

    图片 10

    mvp0

这样分层的好处就是大大减少了Model与View层之间的耦合度。一方面可以使得View层和Model层单独开发与[测试](https://link.jianshu.com?t=http://lib.csdn.net/base/softwaretest),互不依赖。另一方面Model层可以封装复用,可以极大的减少代码量。当然,MVP还有其他的一些优点,这里不再赘述

二、LookLook案例

能够阅读和讯晚报,今日头条头条,每一日推送一张妹子图片和录制,是二个精彩的阅读软件。固守GoogleMeterial 设计风格,参与了有的5.0上述的新个性,阅读资历绝不逊色于官方的app。

图片 11

架构:MVP

图形加载:Glide

互联网央浼:RxJava & Retrofit+okhttp

界面:依据谷歌(GoogleState of Qatar Meterial 设计风格

其他:Cardview,RecycleView,Butterknife,PhotoView

项目地址github:https://github.com/xinghongfei/LookLook

参谋链接:2014年最值得学习的中国共产党第五次全国代表大会开源项目 - 简书