Я использовал шаблон шаблона для алгоритма, который я пишу. Но я объединил его с шаблоном наблюдателя, чтобы получить информацию о процессе.
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");
}
}