需要有关Http Requester的Java设计的帮助

时间:2010-01-26 07:54:34

标签: java blackberry java-me design-patterns

我遇到了一个设计问题。我有以下(相关)课程:

 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 UI。

有没有人对如何更新此设计有任何建议?如果你能提供尽可能多的细节,我会非常感激,因为我尝试了很多不同的东西而且我一直遇到问题。

谢谢!

1 个答案:

答案 0 :(得分:2)

看看Observer pattern。在这种情况下,您的UI屏幕将是观察者。