Как эффективно использовать шину событий?

Прямо сейчас я изучаю некоторые варианты проекта обучения Android. Я пытаюсь общаться с моим рельсы API (также учебный проект).

После некоторого исследования, я думаю, я остановился на схеме, которая использует модернизацию и Отто.

Что я в конечном итоге это. Когда я хочу позвонить на мой сервер rails (в этом случае выполнить регистрацию), я делаю это в упражнении.

 mBus.post(new SignupRequestEvent(new UserRequestParams(mName,mEmail,mPassword,mPasswordConfirmation )));

и затем в той же деятельности у меня есть это.

@Subscribe
public void onSignupCompleted(SignupCompletedEvent event) {
    System.out.println(String.format("in onSignupCompleted, got token = %s ", event.getParams().getToken()));

}

Проблема здесь заключается в том, что в каждом конкретном случае каждый тип запроса API и соответствующий ему тип ответа будет уникальным типом события и потребует своего собственного класса, который выглядит как много кода типа базовой платы.

Например, для обработки входа и выхода мне понадобятся эти два класса:

public class SignupRequestEvent {
    protected UserRequestParams mSignupParams;

    public SignupRequestEvent(UserRequestParams signupParams) {
        mSignupParams = signupParams;
    }

    public UserRequestParams getParams() {
        return mSignupParams;
    }

}

public class SignupCompletedEvent {

    private SignupCompletedParams mSignupCompletedParams;
    public SignupCompletedParams getParams() {
        return mSignupCompletedParams;
    }
    public SignupCompletedEvent(SignupCompletedParams signupCompletedParams) {
        mSignupCompletedParams = signupCompletedParams;
    }

}

И я думаю, что большинство классов событий были бы в значительной степени идентичны.

Я думаю, что мне просто нужно иметь 2 события для вызовов API, одно для запросов и одно для ответов, но тогда каждый метод, который получает событие ответа API, должен будет проверить, является ли это ответом на требуемый запрос.

Эта опция будет означать что-то вроде этого:

ApiRequestEvent apiRequestEvent = new ApiRequestEvent();
apiRequestEvent.setAction("SIGNUP");
apiRequestEvent.setParameters(new UserRequestParams(mName,mEmail,mPassword,mPasswordConfirmation ));
mBus.post(apiRequestEvent);

а затем обработать ответ примерно так:

@Subscribe
public void onSignupCompleted(ApiResponseAvailable event) {
    if (event.getResponseTo != "SIGNUP") return;
    System.out.println(String.format("in onSignupCompleted, got token = %s ", event.getParams().getToken()));

Может быть, есть способ использовать дженерики?

Может кто-нибудь объяснить, как эффективно использовать шину событий, когда есть ряд событий, которые можно сгруппировать, как это?

Ответы на вопрос(1)

Ваш ответ на вопрос