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