У меня проблема с дизайном. У меня есть следующие (соответствующие) классы:
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.
У кого-нибудь есть предложения, как мне обновить этот дизайн? Если бы вы могли предоставить как можно больше подробностей, я был бы очень признателен, поскольку перепробовал много разных вещей и продолжаю сталкиваться с проблемами.
Спасибо!