我遇到了一个设计问题。我有以下(相关)课程:
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。
有没有人对如何更新此设计有任何建议?如果你能提供尽可能多的细节,我会非常感激,因为我尝试了很多不同的东西而且我一直遇到问题。
谢谢!