Java中的API還提供現成的Observer接口java.util.Observer
和類java.util.Observable------------大家可以看一下api和源碼
下面提供案例
package shejimoshi.observer; import java.util.Observable; /** * 類描述:Product 繼承自Observable (被觀察) * @author 王要傑 * @version 1.0.8.1 * 創建時間 2014-2-24 */ public class Product extends Observable { private float price = 50.0f; private String name = ""; public Product(String name) { this.setName(name); } public Product() { } public void setPrice(float price) { this.price = price; this.setChanged();//設定標誌true this.notifyObservers(this.price);//通知觀察者 } public float getPrice() { return price; } public void setName(String name) { this.name = name; } public String getName() { return name; } } ---------------------------------- package shejimoshi.observer; import java.util.Observable; import java.util.Observer; /** * 類描述:觀察者實現Observer 接口中的update方法 * @author 王要傑 * @version 1.0.8.1 * 創建時間 2014-2-24 */ public class MyObserver implements Observer { public void update(Observable o, Object arg) { // TODO Auto-generated method stub Observable product = (Product) o; float price = (Float) arg; System.out.println(((Product) product).getName() + "修改價格爲" + price); } } -------------------------------- package shejimoshi.observer; /** * 類描述: * @author 王要傑 * @version 1.0.8.1 * 創建時間 2014-2-24 */ public class Test { /** * 方法描述:@cursor * * @param args * @param 關鍵字 * @author 王要傑 * @date 創建時間 2014-2-24 * @since V1.0.8.1 */ public static void main(String[] args) { // TODO Auto-generated method stub Product p1 = new Product("Spring in Action"); Product p2 = new Product("Hibernate"); MyObserver observer = new MyObserver(); p1.addObserver(observer);//註冊觀察者 p2.addObserver(observer);//註冊觀察者 p1.setPrice(35); p2.setPrice(22); } }
-------------
輸出結果
Spring in Action修改價格爲35.0
Hibernate修改價格爲22.0