observer 的备忘(二)--JDK



被观察者  继承 Observerable 类
在方法中  this.setChanged() ;this.notifyObservers()


观察者    实现 Observer接口

重写update方法来实现对观察者的回应

在被观察者出现多继承的情况时 考虑有adapter的方式实现
   public class cat extends  BaseClass (extends Observerable)

   public class cat extends Observerable{
      private BaseClass bc = new BaseClass() 
}


package com.cht.observer;

import java.util.Observable;
import java.util.Observer;


public class MouseCatMan {
   public static void main (String [] args){
	     Cat c = new Cat();
	     Observer o1 = new Mouse();
	     Observer o2 = new Man();
	     c.addObserver(o1);
	     Mouse m = (Mouse)o1;
	     m.addObserver(o2);
	     //非常关键的一部 调用c中的方法开始触发
	    c.cry();
   }
}
class Cat extends Observable{
	public void cry(){
		System.out.println("the cat cry");
		this.setChanged();
		this.notifyObservers();
	}
}
class Mouse extends Observable implements Observer {

	@Override
	public void update(Observable o, Object arg) {
        System.out.println("the  cat cry ! mouse run!!");
        this.setChanged();
        this.notifyObservers();
	}
}
class Man implements Observer{

	@Override
	public void update(Observable o, Object arg) {
           System.out.println("Scared me!!");		
	}
	
}

猜你喜欢

转载自chenhetong.iteye.com/blog/1099490