public abstract class Observable { //用一个List对象来保存该对象上所有绑定得事件监听器 List<Observer> observers = new ArrayList<Observer>(); //定义一个方法,用于从该主题上注册观察者 public void registObserver(Observer o){ observers.add(o); } //定义一个方法,用于从该主题上删除观察者 public void removeObserver(Observer o){ observers.remove(o); }
//通知该主题上注册的所有观察者 public void notifyObservers(Object value) { //遍历注册到该被观察者上的所有观察者 for (Observer o:observers ) { o.update(this,value); } }
public class main { public static void main(String[] args) { //创建一个被观察者 Produce produce = new Produce("汽车",100000); //创建两个观察者 NameObserver nameO = new NameObserver(); PriceObserver priceO = new PriceObserver(); //向被观察者上注册两个观察者对象 produce.registObserver(nameO); produce.registObserver(priceO); //程序调用setter方法来改变Product的name和price变量 produce.setName("audi"); produce.setPrice(400000f); } }