这个问题与设计有关。我使用Android Async-Http-Client库http://loopj.com/android-async-http/ 从一个类中的不同方法发出多个调用请求,所以我的代码是这样的
RestClient.post(context, "", entity, "application/json", new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
}
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) {
// Map objects from json using gson
}
});
如果我的类中的不同方法进行类似的调用,如上面的代码但有不同的请求参数,我怎么能封装ResponseHandler Callback,所以我不必在每个方法调用中不断重复它。想知道我是否可以使用其他漂亮的设计模式方法。
注意
我已经考虑过将其子类化,正如其他人所建议的那样,但我似乎无法以这种方式获得json对象的响应。 感谢
答案 0 :(得分:0)
所有这些请求的回调行为是否相同?如果是这样,你可以创建一个JsonHttpResponseHandler的单个共享实例并在任何地方使用它:
private JsonHttpResponseHandler handler = new JsonHttpResponseHandler() {
@Override
public void onSuccess(...) {
...
}
}
...
RestClient.post(..., handler);
或者你可以创建一个JsonHttpResponseHandler的子类并使用它:
public class MyResponseHandler extends JsonHttpResponseHandler {
@Override
public void onSuccess(...) {
...
}
}
...
RestClient.post(..., new MyResponseHandler());
答案 1 :(得分:0)
您不必为每次通话创建新的处理程序。
JsonHttpResponseHandler myHandler = new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
}
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) {
// Map objects from json using gson
}
};
RestClient.post( context, "", entity, "application/json", myHandler );
答案 2 :(得分:0)
如何将其提取为方法:
private void restClients(RestClient restClient){
restClient.post(context, "", entity, "application/json", new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
}
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) {
// Map objects from json using gson
}
});
}
然后只需调用该方法:
restClients(restclient1)