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层设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python模拟qq空间登录_pytho
- 下一篇: LeetCode 1103. 分糖果 I