我的想法是一个观察一个。也就是老鼠观察猫的,人观察老鼠的。所以首先猫是被观察者,而老鼠即是观察者也是被观察者。人就是老鼠的观察者。
代码如下:
首先我建立了三个类,分别是猫的,老鼠的和人的。
猫的类
- package com.lhsm.observer;
- import java.util.Observable;
- public class Cat extends Observable {
- public void catCall(){
- this.setChanged();
- this.notifyObservers("猫叫了");
- }
- }
老鼠的类
- package com.lhsm.observer;
- import java.util.Observable;
- import java.util.Observer;
- public class Mouse extends Observable implements Observer {
- public void update(Observable arg0, Object arg1) {
- // TODO Auto-generated method stub
- System.out.println(arg1);
- Observer person = new Person();
- this.clearChanged();
- this.addObserver(person);
- this.setChanged();
- this.notifyObservers("老鼠跑");
- }
- }
人的类
- package com.lhsm.observer;
- import java.util.Observable;
- import java.util.Observer;
- public class Person implements Observer {
- public void update(Observable arg0, Object arg1) {
- // TODO Auto-generated method stub
- System.out.println(arg1);
- System.out.println("人醒");
- }
- }
下面是主方法的测试类
- package com.lhsm.observer;
- import java.util.Observer;
- public class TestMain {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Cat cat = new Cat();
- Observer mouse = new Mouse();
- cat.addObserver(mouse);
- cat.catCall();
- }
- }
运行结果
- 猫叫了
- 老鼠跑
- 人醒