日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Java中使用Observer接口和Observable类实践Observer观察者模式

發布時間:2025/7/14 83 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中使用Observer接口和Observable类实践Observer观察者模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??在Java中通過Observable類和Observer接口實現了觀察者模式。實現Observer接口的對象是觀察者,繼承Observable的對象是被觀察者。

1.?實現觀察者模式 實現觀察者模式非常簡單, [1]創建被觀察者類,它繼承自java.util.Observable類; [2]創建觀察者類,它實現java.util.Observer接口; [3]對于被觀察者類, 添加它的觀察者:
void addObserver(Observer?o)
addObserver()方法把觀察者對象添加到觀察者對象列表中。 當被觀察事件發生時,執行:
setChanged(); notifyObservers();
setChanged()方法用來設置一個內部標志位注明數據發生了變化;notifyObservers()方法會去調用觀察者對象列表中所有的Observer的update()方法,通知它們數據發生了變化。 只有在setChange()被調用后,notifyObservers()才會去調用update()。 [4]對于觀察者類,實現Observer接口的唯一方法update
void update(Observable?o, Object?arg)
形參Object?arg,對應一個由notifyObservers(Object?arg);傳遞來的參數,當執行的是notifyObservers();時,arg為null。 下面給出一個簡單的示例: package designpattern_observer;import java.util.Observable;public class MyButtonObserable extends Observable {private String clickMode;public String getClickMode() {return clickMode;}public void setClickMode(String clickMode) {this.clickMode = clickMode;this.setChanged();this.notifyObservers(clickMode);} } package designpattern_observer;import java.util.Observable; import java.util.Observer;public class MyTextBoxAbserver implements Observer {@Overridepublic void update(Observable o, Object arg) {if (arg.toString().equals("double clicked")) {System.out.println("你對按鈕執行了雙擊操作.");}} }

Test類:

package designpattern_observer;public class ObserverTest {public static void main(String[] args) {MyButtonObserable button = new MyButtonObserable();MyTextBoxAbserver textbox = new MyTextBoxAbserver(); button.addObserver(textbox);button.setClickMode("double clicked");} }

執行入口函數,調用?button.setClickMode("double clicked"),則觸發MyTextBoxAbserver 對象的update方法,打印輸出:

你對按鈕執行了雙擊操作.

總結

以上是生活随笔為你收集整理的Java中使用Observer接口和Observable类实践Observer观察者模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。