而不是使用内置类 Observable和 Observer我正在尝试自己构建它。
根据我的文档,我认为:
public class Observable{
private Set<Observer> observingMe=null;
private boolean amIchanged;
public void notifyObservers(Object args){
for(Observer o:observingMe){
o.update(args);
}
}
public void addObserver(Observer e){
observingMe.add(e);
}
}
public class Price implements Observable{
private int price;
public void setPrice(int newPrice){
price=newPrice;
notifyObservers(price);
}
}
public interface Observer{
public void update(Object args);
}
这(简而言之)是 Observable 的正确实现吗?在构建 Observable 类时我还需要考虑什么? 有没有办法自动检测 Observable 实例中的任何变化,或者继承的类必须显式调用notifyObservers?
请不要介意语法或小错误
最佳答案
在您的通知方法中,请考虑调用更新时观察者抛出异常的情况。如果你不处理它,就会阻止其他观察者收到通知。此外,您可能希望在单独的线程中通知每个观察者,因为其中一个观察者可能需要很长时间才能对事件使用react,从而阻止其他观察者提前收到通知。
此外,您永远不会使用 boolean 值 amIChanged,并且无需使用 getter 即可将其保持为私有(private)。否则,您就已经实现了基本原则。
关于java - 构建 Observer 和 Observable 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27757896/