package
java.util
class
Observer // 观察者
Observable // 被观察者
Observer 接口只有一个方法,当有被观察的对象发生变化的时候执行该方法:
void update(Observable o, Object arg);
Observable与Observer是一对多的关系,也很好理解,因为可以多个对象观察一个对象,例如多个学生观察老师,当老师问问题的时候,每个学生都会做出相应的反馈。
实际编程中,需要实现Observer接口,并扩展Observable来进行相应的操作。
需要注意的是要在Observable发生变化的时候执行setChanged(),才会通知Observer。
Observable保存了观察者的集合,在不同的线程中对Observable进行操作的时候,会导致通知Observer发生紊乱,例如某个Observer已经被删除了,但是因为没有进行同步,依然通知了该Observer。
private Vector<Observer> obs;
- 使用线程安全的Vector保存Observer
- 在对Observer集合进行操作之前都要进行同步
网友评论