【发布时间】:2011-06-18 19:52:55
【问题描述】:
我正在尝试为我的项目实现观察者模式。 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 做一些工作。迄今为止的更改是由一些代码 sn-p 进行的,例如: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 是在不同的线程中制作的。
【问题讨论】:
标签: java observer-pattern