Нужна помощь с дизайном Java Http Requester - PullRequest
2 голосов
/ 26 января 2010

У меня проблема с дизайном. У меня есть следующие (соответствующие) классы:

 class LoginScreen {
   public login() {
      httpRequest = factory.createHttpRequest(url, method, this);
      httpRequest.start();
   }
   public authorize() {
      httpRequest = factory.createHttpRequest(url, method, this);
      httpRequest.start();
   }
   public requestSucceeded(){...}
   public requestFailed(){...}
 }

class HttpRequest extends Thread {

   LoginScreen screen;
   ...

   public HttpRequest(url, method, screen) {
      this.url = url;
      this.method = method;
      this.screen = screen
   }

   public run() {
     ...
   }
}

Как видите, и login (), и authorize () будут выполнять следующий код:

httpRequest = factory.createHttpRequest(url, method, loginScreen);
httpRequest.start();

И затем, в поточном классе HttpRequest после HttpRequest, метод run () обновит LoginScreen напрямую с его результатами. Например:

screen.requestSucceeded(baos.toByteArray(), contentType);

Однако это очень плохой дизайн. Я хочу, чтобы в будущем класс метода HttpRequest можно было повторно использовать, и я хочу, чтобы он мог передавать ему много разных типов классов или экранов. Сейчас он работает только с LoginScreen и напрямую обновляет интерфейс LoginScreen.

У кого-нибудь есть предложения, как мне обновить этот дизайн? Если бы вы могли предоставить как можно больше подробностей, я был бы очень признателен, поскольку перепробовал много разных вещей и продолжаю сталкиваться с проблемами.

Спасибо!

1 Ответ

2 голосов
/ 26 января 2010

Взгляните на Шаблон наблюдателя . Здесь, в этом случае, ваши экраны пользовательского интерфейса будут наблюдателями.

...