某日,几个小偷去作案,一人盯梢,每个小偷都要给盯梢的人打个报告,然后盯梢者发现人来了就给小偷们发出通知....
啦啦,行动开始...
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();//通知同伙快跑 } }
程序输出结果:
农民伯伯回来了.. 农民伯伯来了,小茜快跑啊! 农民伯伯来了,小黑快跑啊! 农民伯伯来了,小花快跑啊!