Наблюдатель в сочетании с шаблоном шаблона - PullRequest
1 голос
/ 03 августа 2011

Я использовал шаблон шаблона для алгоритма, который я пишу. Но я объединил его с шаблоном наблюдателя, чтобы получить информацию о процессе.

public abstract class Test extends Observable

В методе для алгоритма я называю уведомление

public final void findSolution() {
 // run algorithm
 notifyObservers();
}

Этот абстрактный класс с методом findSolution будет расширен за счет различных реализаций алгоритма. Пользовательский интерфейс просто сохраняет ссылку на Test и вызывает findSolution (), но метод обновления из пользовательского интерфейса никогда не будет вызываться.

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 Ответ

4 голосов
/ 03 августа 2011

Ничего не происходит, потому что наблюдаемое не изменилось.

С в javadoc :

Если этот объект изменился, как указано методом hasChangedзатем уведомите всех своих наблюдателей и затем вызовите метод clearChanged, чтобы указать, что этот объект больше не изменился.

Таким образом, вам следует вызвать setChanged(), прежде чем уведомлять наблюдателей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...