任何人都可以幫助我解決問題:我們如何使用普通的課程進行網絡調用,可以使用Volley和Retrofit進行少量更改?所以在未來,如果我必須改變改造或回到Volley,那應該是可行的。在Android中使用排球和改裝的普通課程
在此先感謝。
任何人都可以幫助我解決問題:我們如何使用普通的課程進行網絡調用,可以使用Volley和Retrofit進行少量更改?所以在未來,如果我必須改變改造或回到Volley,那應該是可行的。在Android中使用排球和改裝的普通課程
在此先感謝。
你正在談論一個包裝類。
基本上,您需要爲網絡呼叫創建合同。您必須定義要發送的參數類型,要獲取的數據量以及要使用的回調系統類型。你不應該在這個級別使用任何Volley/Retrofit類,以便能夠切換這些東西。這種做法是非常有用的,每次你可能需要從任何框架解耦應用程序,無論是安全性(實際的關注),測試等讓我們看一個例子:
public class Request<X>{
protected HashMap<String, String> headers;
protected HashMap<String, String> queryParams;
protected X body;
private String url;
//manage fields
}
public class Response<X> extends Request<X>{
private int statusCode;
//manage fields
}
public class restApi{
public interface OnRestOperation<X>{
void onSuccess(Response<X> operation);
void onServerFailure(Response<X> operation);
void onClientFailure(Response<X> operation)
}
public interface NetworkLayer{
void makeCall(Request<X> request, Map<String, OnRestOperation> listeners);
void removeListener(String listenerName);
}
private HashMap<String, OnRestOperation> listeners;
private NetworkLayer networkLayer;
public restApi(NetworkLayer networkLayer){
this.networkLayer = networkLayer;
}
public restApi setNetworkLayer(NetworkLayer networkLayer){
this.networkLayer = networkLayer;
return this;
}
public void call(Request<X> request, OnRestOperation<X> aListener, String listenerName){
listeners.put(getListenerName(request), aListener);
networkLayer.makeCall(request, listeners);
}
public deleteListener(String listenerName){
listeners.remove(listenerName);
networkLayer.removeListener(listenerName);
}
}
NetworkLayer就是改裝/抽射/無論應該實施什麼。顯然,你可以去Rx /事件總線而不是聽衆,添加線程,記憶等。
謝謝你正在尋找同樣的東西 –
爲什麼不只是聲明一個API訪問接口並以兩種特定的方式實現它? –
你能給我一個示例代碼片段 –
這是一個微不足道的設計問題。 –