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
转载于:https://blog.51cto.com/wangyaojie/1566018