我对观察者模式有疑问。
首先,我有一个 HttpHelper 类来从服务器获取数据,我将它用作 Observerable。
public class HttpHelper extends Observable,Runnable{
public void run(){
//do long task to get data
String result = getData();
setChanged();
notifyObservers(result);
}
}
DataManager 类在完成后从 HttpHerlper 获取数据,然后执行一些业务任务。
public class DataManager implements Observer {
public void doTask(){
HttpHelper helper = new HttpHelper();
helper.addObserver(this);
Thread thread = new Thread(helper);
thread.start();
}
public void update(Observable obj, Object data) {
if (data instanceof String) {
// do some stuff with this data
// Then I want to notify the result to the view
Model model = doSomething(data);
notify(model)
}
}
}
最后,View 类将在 DataManager 完成任务时更新数据。
public class View{
private void getData(){
DataManager manager = new DataManager()
manager.doTask();
}
public void update(Observable obj, Object data) {
}
}
我应该再次使用观察者吗?我该怎么做?
P/s:由于某种原因,HttpHelper 和 DataManager 必须分开。
更新:这是类结构
https://www.dropbox.com/s/givn6vzvqr4cgye/bkd.png