У меня есть класс интерфейса
public interface AsyncTaskExecuteCommand {
public Object executeCommand(String jsonLocation) throws IOException,JSONException;
}
И у меня есть HashMap, в котором хранятся экземпляры этого интерфейса
public static HashMap<String,AsyncTaskExecuteCommand> executeCommandHashMap
executeCommandHashMap.put(COMMAND_CORE_FIELD_FETCH, new AsyncTaskExecuteCommand() {
@Override
public Object executeCommand(String jsonLocation) throws IOException, JSONException{
//return some thing
}
});
executeCommandHashMap.put(COMMAND_REGISTER_FIELD_FETCH, new AsyncTaskExecuteCommand() {
@Override
public Object executeCommand(String jsonLocation) throws IOException,
JSONException {
//return some thing
}
});
И мой AsyncTask с именем GeneralAsyncTask включает в себя
doInBackground(){
AsyncTaskExecuteCommand asyncTaskExecuteCommand = executeCommandHashMap.get(params[0]);
return asyncTaskExecuteCommand.executeCommand(params[1]);
}
И этот AsyncTask называется
new GeneralAsyncTask().execute(COMMAND_REGISTER_FIELD_FETCH,"http://something");
Я сделал это, потому что общая структура моего AsyncTask остается прежней, то есть он выполняет некоторое выполнение метода и возвращает некоторое значение. Только тип выполнения метода и возвращаемое значение будутбыть другим. Если я не буду реализовывать передачу интерфейса к асинхронной задаче, я в конечном итоге создаю множество классов AsyncTask.Итак, этот метод хорош для решения моего сценария?