2017-05-25 6 views
1

VolleyとRetrofitの両方で最小限の変更で使用できるネットワークコール用の共通クラスを使用するにはどうすれば助けてくれますか?将来的には、改装やバレーへの変更が必要な場合は、実現可能なはずです。AndroidのVolleyとRetrofitで使用する一般的なクラス

ありがとうございます。

+0

APIアクセスインターフェイスを宣言して2つの具体的な方法で実装するだけではどうですか? –

+0

あなたは私にコードスニペット –

+0

の例を教えてもらえますかこれは些細な設計上の問題です。 –

答えて

2

あなたはラッパークラスについて話しています。

基本的に、ネットワーク通話の契約を作成する必要があります。どの種類のパラメータを送信するのか、どのくらいのデータを取得するのか、どの種類のコールバックシステムを使用するのかを定義する必要があります。このレベルでは、物を切り替えるために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/eventbusに行き、スレッドやメモを追加することができます。

+0

同じものを探していただきありがとうございました –

関連する問題