-- Start
觀察者模式又被稱為發布-訂閱<Publish/Subscribe>模式, 它通常應用在使用者介面中, 一個典型的例子是當業務對象發生變化時, 通知使用者介面, 從而即時重新整理資料, 此時使用者介面是觀察者, 業務資料是被觀察者. Java 通過 Observer(觀察者) 和 Observable(被觀察者) 為我們實現了一個觀察者模式的架構, 下面是一個簡單的例子.
import java.util.Observable;import java.util.Observer;public class Test {public static void main(String[] args) throws Exception {WeatherData wd = new WeatherData();wd.addObserver(new WeatherGUI());// 測試for (int i = 0; i < 10; i++) {wd.setTemperature(i);}}}// 天氣對象 (被觀察者)class WeatherData extends Observable {public static String TEMPERATURE = "temperature";private Integer temperature; // 溫度public Integer getTemperature() {return temperature;}public void setTemperature(Integer newTemperature) {Integer oldTemperature = temperature;temperature = newTemperature;if (oldTemperature != null && newTemperature != null && oldTemperature != newTemperature) {setChanged(); // 設定變化標誌位notifyObservers(TEMPERATURE); // 通知觀察者}}}// 天氣GUI(觀察者)class WeatherGUI implements Observer {public void update(Observable o, Object arg) {WeatherData wd = (WeatherData) o;if (WeatherData.TEMPERATURE.equals(arg)) {displayTemperature(wd.getTemperature()); // 得到通知後重新整理溫度}}// 顯示溫度private void displayTemperature(Integer temperature) {System.out.println(temperature);}}
-- 更多參見:Java 精萃
-- 聲 明:轉載請註明出處
-- Last Updated on 2012-09-13
-- Written by ShangBo on 2012-09-13
-- End