android model 设计,Android model层设计
model層
在開發(fā)app的過程中,不管是使用了mvp還是mvc甚至mvvm模式,model層的設(shè)計基本都是一樣的,model層可以被稱為數(shù)據(jù)層,它的主要任務(wù)就是為上層提供各種的數(shù)據(jù)服務(wù),上層完全不需要關(guān)心這些數(shù)據(jù)是來自網(wǎng)絡(luò),還是內(nèi)存,還是本地存儲。
那我們就通過一個時序圖來看下model層的工作流程
8F09B23E-E1C2-44D7-A45D-C37FFD1B8C63.png
上面的時序圖只是反映了數(shù)據(jù)獲取的正常的一個流程,根據(jù)業(yè)務(wù)的不同,數(shù)據(jù)到底是從內(nèi)存還是從本地還是從網(wǎng)絡(luò)獲取都是不同的,有些業(yè)務(wù)會直接從網(wǎng)絡(luò)獲取數(shù)據(jù),有些業(yè)務(wù)會根據(jù)本地數(shù)據(jù)的有效期等進(jìn)行判斷到底是從網(wǎng)絡(luò)獲取還是依舊從本地獲取,并且比如從網(wǎng)絡(luò)返回的數(shù)據(jù),有些業(yè)務(wù)是不需要存儲在本地和內(nèi)存中的,有些則需要從網(wǎng)絡(luò)獲取到數(shù)據(jù)把本地和內(nèi)存中的數(shù)據(jù)進(jìn)行更新
注意點(diǎn)
從網(wǎng)絡(luò)獲取的數(shù)據(jù)類型異常校驗(yàn)
看一段從網(wǎng)絡(luò)返回的json數(shù)據(jù)
{
"code":0,
"msg":"ok",
"data":{
"age":"",
"weight":"uy8",
"name":"null"
}
}
上面數(shù)據(jù)中age和weight都是一個int類型值,這時候服務(wù)器返回的確實(shí)一個空字符串和一個非數(shù)據(jù)字符串,假如不做任何處理的話,app就會奔潰了,name的類型是字符串,但是服務(wù)器卻返回了null,在界面顯示上肯定不友好
因此為了增加app的健壯性,針對以上的情況,model層就需要對這些異常類型數(shù)據(jù)做處理,不管是Gosn還是其他的解析庫都提供了相應(yīng)的處理方法
網(wǎng)絡(luò)返回實(shí)體數(shù)據(jù)類設(shè)計
實(shí)體數(shù)據(jù)類的設(shè)計可以有兩種:一種是繼承,一種是使用泛形。
繼承
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;
}
繼承的好處是有一些實(shí)體類是需要獲取到code值,不好的地方是其實(shí)大部分實(shí)體類其實(shí)沒必要知道code,msg等信息的存在
泛形的好處顯而易見,大部分實(shí)體類完全不知道code,msg等信息
因此根據(jù)自己的實(shí)際業(yè)務(wù)來進(jìn)行使用,沒有哪種更好,只有哪種更適合業(yè)務(wù)
總結(jié)
以上是生活随笔為你收集整理的android model 设计,Android model层设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python模拟qq空间登录_pytho
- 下一篇: Android8.1怎么装谷歌,谷歌Pi