观察者模式

1.在一个extends Observable类的类中需要调用this.setChanged();方法,
还得调用this.notifyObservers( arg);可以带参数,也可以不带,会执行实现了Observer接口update(Observable o,Object obj)方法,在这个方法中可以获取 arg参数.(一个类的执行会引起另一个类的执行)
public class MyObservable extends Observable {
 Integer i;
 public void set(Integer i){
  this.i=i;
  this.setChanged();
 }
 
 public void testChange(){
  //设置对象已改变
  this.setChanged();
 // set(Integer.valueOf(8));
  //通知观察者
 // this.notifyObservers(i);
  this.notifyObservers("猪肉涨价了");
 
  System.out.println("世道变了!!");
 }
 
 
 public static void main(String [] args){
 
 
  MyObservable observable = new MyObservable();
 
  MyObserver observer = new MyObserver();
  MyObserver observer2 = new MyObserver();
  //注册观察者
  observable.addObserver(observer);
  observable.addObserver(observer2);
 
  observable.testChange();
 }
}
import java.util.Observable;
import java.util.Observer;
public class MyObserver implements Observer {
 public void update(Observable o, Object arg) {//只要改变了 observable 对象就调用此方法。
  System.out.println( "观察者观察到:::" +(String)arg);
 }
}

你可能感兴趣的:(observer)