现在的位置: 首页 > 综合 > 正文

设计模式之Observer 第一版

2018年05月22日 ⁄ 综合 ⁄ 共 1283字 ⁄ 字号 评论关闭

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

啦啦,行动开始...

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

程序输出结果:

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

 

 

抱歉!评论已关闭.