个人感觉就是做一个被观察对象,监视的对象,一旦被观察对象有任何变化,监视对象就能发觉!
定义一个观察者-警察(police),和被观察者-罪犯(criminal).
1
public class Criminal extends Observable
{
2
3
private String name;
4
5
public Criminal()
{
6
7
}
8
9
public void break(String name)
{
10
this.name=name;
11
//添加
12
setChanged();
13
notifyObservers(name);
14
}
15
16
}
1
public class Police implements Observer
{
2
3
public Police()
{
4
5
}
6
7
public void update(Observable obj,Object arg)
{
8
if (arg instanceof String)
{
9
name=(String)arg;
10
11
System.out.println(name+" 越狱了! ");
12
}
13
}
14
}
1
public class Test
{
2
public static void main(String[] args)
{
3
Police police=new Police();//一个警察
4
Criminal criminal=new Criminal();//一个犯人
5
criminal.addObserver(police);//分配任务,犯人由这个警察看管
6
criminal.break();
7
}
8
}
代码分析:
Observable类 setChanged()方法,这个方法很简单就是声明我要做这个动作.
本例中就是罪犯在自己牢房门口写个牌子说,今天晚上我要逃跑!(估计没这么傻的人)
notifyObservers(name);就是告诉警察有人要逃跑,
警察过来检查发现如果谁门口有写牌子就发出警报,XX要逃狱!
一个犯人可以有多个警察监视,比如有的监视不能吸烟,有的监视不能逃跑