Java 如何避免观察者模式中的冲突?
这是香港电台的跟进问题 如果我有以下代码,并且方法信号由B的两个实例同时调用,这将导致每个B调用重置两次的冲突。我能做些什么来解决它 如果发生导致重置的事件,只有在所有B都完成重置时,才可以重置Java 如何避免观察者模式中的冲突?,java,observer-pattern,Java,Observer Pattern,这是香港电台的跟进问题 如果我有以下代码,并且方法信号由B的两个实例同时调用,这将导致每个B调用重置两次的冲突。我能做些什么来解决它 如果发生导致重置的事件,只有在所有B都完成重置时,才可以重置 public class A { private B b[]; public A() { //for loop b[i] = new B(this); } public void signal() { //tells e
public class A {
private B b[];
public A() {
//for loop
b[i] = new B(this);
}
public void signal() {
//tells every B to reset.
//for loop
b[i].reset();
}
}
public class B {
A creator;
public B(A creator) {
this.creator = creator;
}
public void reset() {
//very critical operation that should not happen back to back
}
public void main(String[] args) {
while(true)
if(isBad()==true) {
//Something bad happen. Tell A to reset everyone.
creator.signal();
}
}
}
重置中发生的情况对B的所有实例都至关重要吗?或者仅仅是B的一个实例被调用?调用不是同时的,而是连续的,每个B调用一次信号。你能把问题陈述得更清楚些吗?是否要避免多次连续重置?你想要什么样的行为?@HunterMcMillen这对所有的B都很重要。例如,所有B作为一个整体只能调用一次信号,并且在重置后再次调用。为不同的通知类型或要通知的特定观察者实施不同的方法。因为所有a都拥有不同的B,所以这不能通过使a.信号同步来完成吗?