移动APP开发技术.docx

移动APP开发技术.docx

ID:27315183

大小:932.60 KB

页数:59页

时间:2018-12-02

移动APP开发技术.docx_第1页
移动APP开发技术.docx_第2页
移动APP开发技术.docx_第3页
移动APP开发技术.docx_第4页
移动APP开发技术.docx_第5页
资源描述:

《移动APP开发技术.docx》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、移动APP开发技术1.1基本的架构设计模式提高生产力,是对程序员们对程序进行孜孜不倦架构设计的原因。通过不同的架构设计使程序模块化解耦以及程序内部的高聚合,使得开发人员可以在开发工程中只需关注一点或者某块的功能设计而不必关注全貌,甚至以点窥面,从某个模块的理解即可覆盖全局。同时测试设计也会因为一个更良好的架构设计而改观。在本章,笔者主要针对移动端常用的MVC、MVP、MVVM三种设计模式进行比较探讨,并结合实例,来说明三者之间的差异。1.1.1MVC/MVP/MVVMMVC/MVP/MVVM是一种架构模式,它描述的是数据流向,这三者之间的差别可以由如下图,可以看到三者之前的相同点是,View

2、均为UI层,是用户直接的交互操作入口,并负责UI交互和界面展现相关逻辑。Model层为数据对象,提供对应用程序数据的操作接口,并在数据发生变化时,发出变更通知。图1架构模式那么,它们的不同点是什么呢,在MVC中,controller被动接收View的操作事件,根据事件的不同进行不同的操作,model并不直接与controller交互,而是View通过观察者的方式,来直接与Model交互,在Android中,往往很难区分View和Controller,所以经常会看到好几千行的Activity,非常难维护;MVP可以理解为MVC的升级版,在笔者眼中,它是第一次使客户端分层得以充分实现的一种架构模

3、式,它的特点是,Prensenter将View和Model完全隔离,View传递事件给Presenter,而presenter直接负责View的刷新;MVVM早期应用是windows的MFC上,而近期在2015年googleIO大会上,发布的新Androidstudio也支持了这一特性,它的基础是DATABINDING,这一特性从理想态上来说,完美的解决了UI前端与业务逻辑层的解耦问题,哪怕是MVP也不能具有这么好的特性。1.1.2MVP设计模式实现实现MVP并不复杂,但是重点是把握好,不要过度设计,MVP很容易导致本来很简单的代码需要大量的开发工作,写在前面,可以理解,架构的设计模式与产品

4、体量有关,说一个极端的场景,当你的团队只有1个人,APP整体也只是一个前台展示+简易逻辑处理+数据存储+网络请求时,其实此时并不需要特别复杂的架构设计,而是,要用最简易便捷的方式将APP设计起来,这也遵循了产品设计之初快速产出,快速试错的目的。而当团队逐步增大、产品规模逐步提升,譬如,代码量超10W时,这时候为了团队协作、模块管理、便于测试等诉求,就不得不进行一定的架构设计或重构了。如何讲解一个MVP的例子,还是找一个比较简单的例子切入,可能并不能说明一切端设计的场景,但是可以作为读者了解MVP的切入点,假设有一个用户数据录入的APP,具备简单功能,即用户数据录入&&简单用户数据查询功能,它

5、的界面看起来是如下这样的:图2简易APP用户界面最后的工程结构是这样的,如下图图3MVP基本结构第一步,实现数据载体BeanpublicclassUserBean{privateStringmFirstName;privateStringmLastName;publicUserBean(StringfirstName,StringlastName){this.mFirstName=firstName;this.mLastName=lastName;}publicStringgetFirstName(){returnmFirstName;}publicStringgetLastName(){r

6、eturnmLastName;}}第二步,实现Model层,model其实是对数据的CURD操作的封装,如果有网络请求或其他需要异步处理的需求,这一层通过listener与上层的presenter进行通讯publicinterfaceIUserModel{Booleaninsert(intid,StringfirstName,StringlastName);Booleanupdate(intid,StringfirstName,StringlastName);voiddelete(intid);UserBeanquery(intid);voidreset();Listqu

7、eryAll();}第三步,实现presenterpublicclassUserPresenter{privateIUserViewmUserView;privateIUserModelmUserModel;publicUserPresenter(IUserViewview){mUserView=view;mUserModel=newUserModel();}publicvoidsaveUser(intuse

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。