观察者与模板模式相结合

时间:2011-08-03 13:39:49

标签: java observer-pattern

我将模板模式用于我正在编写的算法。但我将它与观察者模式相结合,以了解该过程。

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");
 }

}

1 个答案:

答案 0 :(得分:4)

没有任何事情发生,因为观察者没有改变。

来自the javadoc

  

如果此对象已更改,如hasChanged方法所示,   然后通知所有观察者,然后调用clearChanged方法   表示此对象已不再更改。

因此,在通知观察员之前,您应该致电setChanged()