某日,几个小偷去作案,一人盯梢,每个小偷都要给盯梢的人打个报告,然后盯梢者发现人来了就给小偷们发出通知....
啦啦,行动开始...
package com.design.observer;
/**
* @author 张奇 http://blog.csdn.net/myxx520
* @date 2011-7-21
* @copyright 转载请注明出处
*/
public class FishThief {
private String personName;
public FishThief(String personName) {
this.personName = personName;
}
//小偷会逃跑
public void runAway() {
System.out.println("农民伯伯来了," + personName + "快跑啊!");
}
}
观察者
package com.design.observer;
import java.util.LinkedList;
/**
* @author 张奇 http://blog.csdn.net/myxx520
* @date 2011-7-21
* @copyright 转载请注明出处
*/
public class Observer {
private LinkedList<FishThief> thiefs = new LinkedList<FishThief>();
// 偷鱼很刺激,要偷鱼先报名
public void addThief(FishThief f) {
thiefs.add(f);
}
// 警察来了,通知同伙快跑啊!!!
public void notifyThief() {
for (FishThief f : thiefs) {
f.runAway();
}
}
}
=================》
package com.design.observer;
/**
* @author 张奇 http://blog.csdn.net/myxx520
* @date 2011-7-21
* @copyright 转载请注明出处
*/
public class Test {
// 启动偷鱼活动了
public static void main(String[] args) {
Observer observer = new Observer();//偷鱼总要有个人放哨三
// 小花 小黑 小茜 为此次偷鱼活动主要头目
FishThief xiaohua = new FishThief("小花");
FishThief xiaohei = new FishThief("小黑");
FishThief xiaoqian = new FishThief("小茜");
observer.addThief(xiaoqian); //放哨者为小花 小黑 小茜 放哨中...
observer.addThief(xiaohei);
observer.addThief(xiaohua);
System.out.println("农民伯伯回来了..");
observer.notifyThief();//通知同伙快跑
}
}
程序输出结果:
农民伯伯回来了..
农民伯伯来了,小茜快跑啊!
农民伯伯来了,小黑快跑啊!
农民伯伯来了,小花快跑啊!