设计模式之Observer 第一版

来源:互联网 发布:淘宝刷到皇冠多少钱 编辑:程序博客网 时间:2024/05/09 05:06

某日,几个小偷去作案,一人盯梢,每个小偷都要给盯梢的人打个报告,然后盯梢者发现人来了就给小偷们发出通知....

啦啦,行动开始...

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();//通知同伙快跑}}


程序输出结果:

农民伯伯回来了..农民伯伯来了,小茜快跑啊!农民伯伯来了,小黑快跑啊!农民伯伯来了,小花快跑啊!