Я пытаюсь реализовать шаблон наблюдателя для моего проекта.Класс LeaveFields
расширяет Observable
, а LeaveGenerator
реализует Observer
.
private class LeaveFields extends Observable {
private User user;
private Date date;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
setChanged();
notifyObservers(user);
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
setChanged();
notifyObservers(date);
}
}
private class LeaveGenerator implements Observer {
@Override
public void update(Observable observable, Object object) {
if (object instanceof User) {
System.out.println("==============User============");
} else if (object instanceof Date) {
System.out.println("==============Date============");
}
}
}
Что я делаю, так это то, что во время выполнения любые изменения пользователя или даты приведут к LeaveGenerator
сделать некоторую работу.Изменения в дате сделаны с помощью некоторого фрагмента кода, например: leaveFields.setDate(date);
.Я пытаюсь понять процесс передачи контроля за любыми внесенными изменениями.До сих пор я обнаружил, что после выполнения leaveFields.setDate(date);
, который вносит некоторые изменения, управление переключается на метод наблюдателя update
.
//some code
leaveFields.setDate(date);
// code segments following this line wait until the update method of observer returns.
После того, как метод update
завершает свою задачу, управление возвращается.Текущее выполнение временно приостанавливается, пока работает update
.
Я прав, и это мой вопрос?Сначала я подумал, что update
сделан в другой теме.