观察者模式更新参数
为什么Observer界面有Observable?作为参数? 你是否推荐使用Javas现有类(实现Observer;扩展Observable)?观察者模式更新参数
public class Test implements Observer { void update(Observable o, Object arg);
}
回答:
如果你使用这种模式,你需要Observer和Observable。
public class Airport extends Observable { private final String name;
public Airport(String name) {
this.name = name;
}
public void planeLanded(String flight) {
setChanged();
notifyObservers(flight);
}
@Override
public String toString() {
return name;
}
}
public class DispatcherScreen implements Observer { @Override
public void update(Observable o, Object arg) {
System.out.println("Flight " + arg + " landed at " + o.toString());
}
}
public class Program { public static void main(String[] args) {
Observer screen = new DispatcherScreen();
Airport airport1 = new Airport("San Francisco International Airport");
Airport airport2 = new Airport("O'Hare International Airport");
airport1.addObserver(screen);
airport2.addObserver(screen);
//
airport1.planeLanded("FR1154");
airport1.planeLanded("UI678");
airport2.planeLanded("SU1987");
airport1.planeLanded("UI678");
airport2.planeLanded("AI4647");
}
}
回答:
它接收Observable
参考,因此,Observer
可以用它来解决这个问题将处理Object
ARG已传递的方式。此外,Observer
可能会在完成作业后致电deleteObserver
将其自行删除。
你不应该使用它们。这不是我告诉你的,这是java自己背后的人。检查出来:
https://dzone.com/articles/javas-observer-and-observable-are-deprecated-in-jd https://docs.oracle.com/javase/9/docs/api/java/util/Observable.html
在Java 9,Observer
和Observable
已被弃用。
已弃用。此类和Observer界面已弃用 。 Observer和Observable支持的事件模型是 相当有限,Observable提供的通知的顺序未指定为 ,状态更改并不是与通知一一对应的 。对于更丰富的事件模型,请考虑使用java.beans的 包。对于线程间的可靠和有序的消息传递, 考虑使用java.util.concurrent包中的一个并发数据结构。对于反应流风格编程,请参阅Flow API。
退房这样对方回答: How observers subscribe on observables?
以上是 观察者模式更新参数 的全部内容, 来源链接: utcz.com/qa/258970.html