model层

在开发app的过程中,不管是使用了mvp还是mvc甚至mvvm模式,model层的设计基本都是一样的,model层可以被称为数据层,它的主要任务就是为上层提供各种的数据服务,上层完全不需要关心这些数据是来自网络,还是内存,还是本地存储。

那我们就通过一个时序图来看下model层的工作流程

8F09B23E-E1C2-44D7-A45D-C37FFD1B8C63.png

上面的时序图只是反映了数据获取的正常的一个流程,根据业务的不同,数据到底是从内存还是从本地还是从网络获取都是不同的,有些业务会直接从网络获取数据,有些业务会根据本地数据的有效期等进行判断到底是从网络获取还是依旧从本地获取,并且比如从网络返回的数据,有些业务是不需要存储在本地和内存中的,有些则需要从网络获取到数据把本地和内存中的数据进行更新

注意点

从网络获取的数据类型异常校验

看一段从网络返回的json数据

{

"code":0,

"msg":"ok",

"data":{

"age":"",

"weight":"uy8",

"name":"null"

}

}

上面数据中age和weight都是一个int类型值,这时候服务器返回的确实一个空字符串和一个非数据字符串,假如不做任何处理的话,app就会奔溃了,name的类型是字符串,但是服务器却返回了null,在界面显示上肯定不友好

因此为了增加app的健壮性,针对以上的情况,model层就需要对这些异常类型数据做处理,不管是Gosn还是其他的解析库都提供了相应的处理方法

网络返回实体数据类设计

实体数据类的设计可以有两种:一种是继承,一种是使用泛形。

继承

public class BaseResponse{

private int mCode;

private String mMsg;

}

public class UserInfo extends BaseResponse{

private int mAge;

private int mWeight;

}

泛形

public class Response{

private int mCode;

private String mMsg;

private T mData;

}

public class UserInfo{

private int mAge;

private int mWeight;

}

继承的好处是有一些实体类是需要获取到code值,不好的地方是其实大部分实体类其实没必要知道code,msg等信息的存在

泛形的好处显而易见,大部分实体类完全不知道code,msg等信息

因此根据自己的实际业务来进行使用,没有哪种更好,只有哪种更适合业务

android model 设计,Android model层设计相关推荐

  1. 基于Android平台的个人日历的设计与开发

    基于Android平台的个人日历的设计与开发 摘要 个人日历是基于Android平台开发的,运行在Android手机平台的个人日程管理软件.本文是对基于Android平台的个人日历的设计与开发. 首先 ...

  2. android 架构份额,Android 架构设计比较分析

    MVC.MVP和MVVM是常见的Android三种架构设计,随着时间的推移,MVC使用率逐渐下降,MVP和MVVM的使用相对比较广泛一些,还是那句话:没有最好的架构,只有最适合的架构. 一.MVC a ...

  3. 基于Android平台智能手机报系统的设计与开发

    前言: 本文写于2012年11月,转眼间7年的时间过去了,最近翻箱倒柜找出来了,看看7年之前写的代码和文章,简直不敢直视,哈哈哈,也没有修改直接分享出来,以示纪念.本文出自门心叼龙的博客,转载请注明出 ...

  4. android studio开发个人备忘录算法设计_Android Studio 4.1 发布,全方位提升开发体验...

    作者 / Scott Swarthout, 产品经理我们很高兴发布了 Android Studio 4.1 稳定版,为大家带来一系列针对常见的编辑.调试和优化工作的功能.4.1 版本的重点诉求之一是帮 ...

  5. android6.0系统车载航一,基于android的车载影音导航系统软件设计与实现-计算机应用技术专业论文.docx...

    基于android的车载影音导航系统软件设计与实现-计算机应用技术专业论文 西南科技大学硕士研究生学位论文 西南科技大学硕士研究生学位论文第1页 摘要 经过对车载影音/导航综合系统在国内外行业以及高校 ...

  6. Java毕设_基于Android的学习无忧APP的设计与实现

    基于Android的学习无忧APP的设计与实现 基于Android的学习无忧APP的设计与实现mysql数据库创建语句 基于Android的学习无忧APP的设计与实现oracle数据库创建语句 基于A ...

  7. 基于eclipse开发Android天气,基于android平台的天气预报软件的设计与实现.doc

    基于android平台的天气预报软件的设计与实现 摘 要 随着智能手机一步步走进普通人的生活,它将成为人们获取信息的主要设备.因此手机的娱乐应用服务将会有很大的发展空间手机快捷查询软件就是其中的一项. ...

  8. 毕业设计论文-基于android平台的手机订餐系统设计,毕业论文基于android的手机订餐系统的设计与实现.doc...

    基于android的手机订餐系统的设计与实现 摘 要 随着科技的发展,二十一世纪成为了以网络化.信息化为核心的社会.网络商业化也成为了时下最热门的词汇,越来越多的宅男宅女们青睐于足不出户便可处理完生活 ...

  9. Android UI Button 和GridView 的设计--优化(2)

    Android 按钮的UI设计,ListView 以及GridView的UI设计 一.按钮的状态 我们一般搞UI设计,按钮通常有三个状态:normal(正常状态);focus(焦点状态),presse ...

  10. 基于Android平台的流媒体播放器的设计

    from: 基于Android平台的流媒体播放器的设计 1引 言 随着移动通信技术和多媒体技术的迅速发展,融合手机.网络.多媒体技术为一体的视频监控技术也有了长足的进步,通过移动通信网络提供流媒体服务 ...

最新文章

  1. Python可视化(matplotlib)图像之误差可视化(Visualizing Errors)
  2. Silverlight初级教程系列
  3. Lintcode: Unique Paths
  4. 网页 php pdf文件怎么打开是乱码,打开php文件乱码的解决方法
  5. 攻击linux的samba,Samba 中间人攻击漏洞(CVE-2015-5296)
  6. aop的实现原理_非Spring管理Bean如何添加AOP呢?
  7. ZJOI2007 棋盘制作
  8. Java 16 正式发布
  9. 命令折叠代码的所有部分?
  10. ThreadLocal,静态变量,实例变量,局部变量的线程安全
  11. 电桥的原理,及非线性误差
  12. 集成Google Play支付
  13. 三菱 FX3u-64M添加以太网FX3u-ENET-ADP模块
  14. c语言作业朱鸣华,C语言程序设计教程
  15. vue之Excel导出和导入
  16. 【企业数字化转型】网络协同和数据智能双螺旋驱动——活数据:流动创造价值...
  17. Ins任务侠v1.5.0
  18. Xwings操作Excel常用帮助功能
  19. 省二计算机相关内容,什么是计算机省二考试 以及考试范围
  20. 关于MIPS平台的asid_cache debug的总结

热门文章

  1. yii2 ajax分页,Yii框架分页技术实例分析
  2. vps搭建网站服务器,vps如何架设网站服务器
  3. qlabel可以选中吗_惊现凡尔赛式排版!原来微信公众号排版样式还可以“变装”?...
  4. win2008启动计算机应用配置,[计算机软件及应用]WIN2008_NAP服务器配置详解.doc
  5. 利用CVE-2019-1040 - 结合RCE和Domain Admin的中继漏洞
  6. LeetCode:Path Sum II
  7. (翻译)Google Guava Cache
  8. javascript常用内置对象总结(重要)
  9. 基础算法学习(二)_二叉树及应用赫夫曼编码
  10. 仿WINDWS无限级Ajax菜单树升级1.3版(修补了严重BUG)