package
java.util
class
Observer // 觀察者
Observable // 被觀察者
Observer 接口只有一個方法,當(dāng)有被觀察的對象發(fā)生變化的時候執(zhí)行該方法:
void update(Observable o, Object arg);
Observable與Observer是一對多的關(guān)系,也很好理解,因為可以多個對象觀察一個對象,例如多個學(xué)生觀察老師绊寻,當(dāng)老師問問題的時候,每個學(xué)生都會做出相應(yīng)的反饋。
實際編程中深纲,需要實現(xiàn)Observer接口,并擴(kuò)展Observable來進(jìn)行相應(yīng)的操作劲妙。
需要注意的是要在Observable發(fā)生變化的時候執(zhí)行setChanged(),才會通知Observer湃鹊。
Observable保存了觀察者的集合,在不同的線程中對Observable進(jìn)行操作的時候镣奋,會導(dǎo)致通知Observer發(fā)生紊亂币呵,例如某個Observer已經(jīng)被刪除了,但是因為沒有進(jìn)行同步侨颈,依然通知了該Observer余赢。
private Vector<Observer> obs;
- 使用線程安全的Vector保存Observer
- 在對Observer集合進(jìn)行操作之前都要進(jìn)行同步