观察者模式更新参数

为什么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,ObserverObservable已被弃用。

已弃用。此类和Observer界面已弃用 。 Observer和Observable支持的事件模型是 相当有限,Observable提供的通知的顺序未指定为 ,状态更改并不是与通知一一对应的 。对于更丰富的事件模型,请考虑使用java.beans的 包。对于线程间的可靠和有序的消息传递, 考虑使用java.util.concurrent包中的一个并发数据结构。对于反应流风格编程,请参阅Flow API。

退房这样对方回答: How observers subscribe on observables?

以上是 观察者模式更新参数 的全部内容, 来源链接: utcz.com/qa/258970.html

回到顶部