需求概述
在app開發(fā)過程中,在和服務(wù)器人員協(xié)作時(shí),一般會(huì)第一時(shí)間確定數(shù)據(jù)接口的請(qǐng)求參數(shù)和返回?cái)?shù)據(jù)格式
,然后服務(wù)器人員會(huì)盡快提供給客戶端可調(diào)試的假數(shù)據(jù)接口。不過有時(shí)候就算是假數(shù)據(jù)接口也來不及提供,或者是接口數(shù)據(jù)格式來回變動(dòng)——很可能是客戶端展示的原因,這個(gè)是產(chǎn)品設(shè)計(jì)決定的,總之帶來的問題就算服務(wù)器端的開發(fā)進(jìn)度會(huì)影響客戶端。
所以,如果可以在客戶端的正常項(xiàng)目代碼中,自然地(不影響最終apk)添加一種模擬服務(wù)器數(shù)據(jù)返回的功能,這樣就可以很方便的在不依賴服務(wù)器的情況下展開客戶端的開發(fā)。而且考慮一種情況,為了測(cè)試不同網(wǎng)絡(luò)速度,網(wǎng)絡(luò)異常以及服務(wù)器錯(cuò)誤等各種“可能的真實(shí)數(shù)據(jù)請(qǐng)求的場(chǎng)景”對(duì)客戶端UI交互的影響,我們往往需要做很多手動(dòng)測(cè)試——千篇一律!如果本地有一種控制這種服務(wù)器響應(yīng)行為的能力那真是太好了。
本文將介紹一種為客戶端項(xiàng)目增加模擬數(shù)據(jù)接口
功能的方式,希望能減少一些開發(fā)中的煩惱。
設(shè)計(jì)過程
下面從分層設(shè)計(jì)、可開關(guān)模擬模塊、不同網(wǎng)絡(luò)請(qǐng)求結(jié)果的制造
這幾個(gè)方面來闡述下模擬接口模塊的設(shè)計(jì)。
為了表達(dá)方便,這里要實(shí)現(xiàn)的功能表示為“數(shù)據(jù)接口模擬模塊”,對(duì)應(yīng)英文為MockDataApi,或簡(jiǎn)寫為MockApi,正常的數(shù)據(jù)接口模塊定義為DataApi。
分層思想
說到分層設(shè)計(jì),MVC、MVP等模式一定程度上就起到了對(duì)代碼所屬功能的一個(gè)劃分。分層設(shè)計(jì)簡(jiǎn)單的目標(biāo)就是讓項(xiàng)目代碼更加清晰,各層相互獨(dú)立,好處不多說。
移動(dòng)app的邏輯主要就是交互邏輯,然后需要和服務(wù)器溝通數(shù)據(jù)。所以最簡(jiǎn)單的情形下可以將一個(gè)功能(比如一個(gè)列表界面)的實(shí)現(xiàn)分UI層和數(shù)據(jù)訪問層。
下面將數(shù)據(jù)訪問層表述為DataApi模塊,DataApi層會(huì)定義一系列的接口來描述不同類別的數(shù)據(jù)訪問請(qǐng)求。UI層使用這些接口來獲取數(shù)據(jù),而具體的數(shù)據(jù)訪問實(shí)現(xiàn)類就可以在不修改UI層代碼的情況下進(jìn)行替換。
例如,有一個(gè)ITaskApi定義了方法
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式