MVP设计模式研究及在Android中的设计_第1页
MVP设计模式研究及在Android中的设计_第2页
MVP设计模式研究及在Android中的设计_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MVP设计模式研究及在Android中的设计摘要:MVP即Model-View-Presenter,是一种界面设计模式。使用MVP设计模式可以帮助我们别离业务逻辑,显示逻辑和用户界面,让我们的程序具有良好的可扩展性、可测试性,保证了系统的整洁性、灵活性。关键词:MVPAndroid设计模式UI控制器模型视图中图分类号:F270.7文献标识码:A文章编号:1674-098X202112a-0097-02在Android上,业务逻辑和数据存取是紧耦合的,很多缺乏经验的工程师可能会将各种各样的业务逻辑塞进某些组件或者自定义View中,使得这些组件的单个类臃肿不堪,这对程序的更新迭代造成很大的影响,而

2、好的设计模式可以使得各个模块之间相互别离,解决系统的耦合度,提高程序的扩展性。1MVP概述MVP是根据MVC延伸出来的一种使用者界面设计模式,是20世纪90年代,IBM旗下的子公司Taligent在用C/C+开发一个叫CommonPoint的图形界面应用系统的时候提出来的。MVP能够有效降低View的复杂性,防止业务逻辑被塞进View中。MVP模式比之MVC模式而言解除了View与Model之间的耦合,同时又带来了良好的可扩展性、可测试性。MVP模式可以别离显示层和逻辑层,它们之间通过接口进行通信,降低耦合。理想化的MVP模式可以实现同一份逻辑代码搭配不同的显示界面,其中的面向接口编程使得程序

3、更加具有开放性以及适用性,保证了灵活性。2MVP模式剖析2.1MVP模式结构MVP模式中,用户与View交互,View与Presenter通过接口进行通信,Presenter与Model通过接口进行交互,Model功能不光提供数据模型,还有数据的存储与获取业务包含在内,整体设计而言解除了View与Model之间的耦合。MVP模式可以让UI界面和数据别离,我们的应用至少可以分为3层,这样可以使得我们对这3层进行独立的单元测试。MVP并不是一个标准化的模式,用户可以根据自己的需求和理解去实现自己的MVP模式设计。2.2View模块分析视图View用于显示UI界面及与用户交互使用,通常使用Andro

4、id中的Activity、Fragment或者自定义View作为View层。在此建议使用Fragment作为View层,因为Fragment自身的特殊性,Fragment自身可作为View来使用,使得程序有更好的扩展性和灵活性。因为MVP自身的独特性,View和Presenter之间直接存在着关联,所以可以使用接口来规定二者的通信。而View自身需要和Presenter进行通信,所以一般View持有一个Presenter成员变量。通常View需要实现一个逻辑接口,将View上的操作通过回转交给Presenter实现,最后Presenter调用View逻辑接口将返回结果给View元素。理想状态下

5、,可以在同一套业务逻辑中完全替换新的View,因为Presenter和View之间都是使用各自的接口对象进行通信。2.3Presenter模块分析控制器Presenter也称为交互中间人,作为沟通View和Model之间的桥梁,它从Model层检索数据后,返回給View层,使得View和Model之间没有耦合,也将业务逻辑从View角色上抽离出来。所以一般情况下,Presenter具体实现类中需要持有View和Model接口对象来进行交互。2.4Model模块分析模型Model负责数据的获取和存储,主要角色是提供数据的存取功能。Presenter需要通过Model层存储、获取数据、请求远程数据

6、等,Model层是一个封装了数据库DAO层及网络获取数据的数据仓库。因为Model层自身的特殊性,负责数据的获取,而有些特殊应用需要缓存数据到本地数据库,所以从远程效劳器和本地存储如:数据库或文件都可能会存取到,可以在Presenter层中控制数据的来源。3MVP模式应用在Android中的实现3.1View与Presenter之间的关联及实现在MVP模式中,View和Presenter之间相互通信,因此可以定义出View和Presenter中的所有通信动作,可以使用接口来限定V和P层的动作,并且V层应该持有P层的对象,可以使用如下代码:publicinterfacebaseViewvoids

7、etPresenterTpresenter;voidshowLoadingStringvalue;voiddismissLoading;booleanisActive;publicinterfacebasePresentervoidstart;voidinitData;voidbindDataToView;publicinterfaceLoginContractinterfaceViewextendsbaseViewvoidsetUsernameStringuserName;voidsetPasswordStringpassWord;interfacePresenterextendsbaseP

8、resentervoidloginStringuserName,StringpassWord;可定义View和Presenter的基类中定义根底的动作,并且规定View中必须实现逻辑接口,将View上的操作通过回转交给Presenter实现,最后Presenter调用View逻辑接口将返回结果给View元素,Presenter层中可在具体类的构造方法中参加View参数,从而实现View和Presenter互相通信的目的。在初始化Presenter后,Presenter类中必须调用View中实现的逻辑接口,将自身传递进去。3.2Android中Model层的设计因为Model层的特殊性,Mode

9、l可定义为数据仓库,Model可以从远程效劳器或者本地保存的数据中读取数据,可以把请求网络接口的操作放在Model中,或者负责第三方SDK交互操作,这一层包含实际的Model类,用于定义当前数据结构。Presenter层可以通过回调获取Model层的数据,完成Presenter层和Model层间的通信。4结语该文对MVP设计模式的概念及其在Android中的设计使用进行了介绍。可以看出,MVP模式非常容易使用,但需要指出的是,MVP并非一套固定的準那么,用户可以根据自己的需求和理解去撰写自己的MVP模式。MVP纵然有代码耦合度降低、层级清晰等一系列优点,但是大量的View-Model,Model-View的手动同步会造成Presenter比较笨重,维护起来会比较困难,而且View和Presenter之间太过紧密,如果View变更,Presenter也需要变更,增加了代码的复杂度。最后,我们应该明白,所有的设计模式都只是对程序开发的指导,并不是准那

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论