我将模板模式用于我正在编写的算法。但我将它与观察者模式相结合,以了解该过程。
public abstract class Test extends Observable
在算法的方法中,我调用通知
public final void findSolution() {
// run algorithm
notifyObservers();
}
这个带有findSolution方法的抽象类将通过不同的算法实现进行扩展。用户界面只保留对Test的引用并调用findSolution(),但ui的更新方法永远不会被调用现在有人会出现什么问题吗?
public class CreateViewResults implements Observer {
private Test algorithm;
public CreateViewResults() {
algorithm = new OneTestImpl();
algorithm.addObserver(this);
algorithm.findSolution();
}
@Override
public update( Observable ob, Object o ) {
System.out.println("Update");
}
}
答案 0 :(得分:4)
没有任何事情发生,因为观察者没有改变。
来自the javadoc:
如果此对象已更改,如hasChanged方法所示, 然后通知所有观察者,然后调用clearChanged方法 表示此对象已不再更改。
因此,在通知观察员之前,您应该致电setChanged()
。