日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android model 设计,Android model层设计

發布時間:2024/7/5 Android 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android model 设计,Android model层设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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层设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。