OneCoder Avatar
OneCodercoderli.com · 937 篇博文
{ } Java

Java 服务端架构

Spring、Netty、日志框架与工程化实战

🎨 视觉封面

Java小故事 不舍得叫醒女孩的男孩 观察者模式

📅 2012-07-25·✍️ onecoder·计算中...·⏱️ 3 分钟
#Java

今天在梳理项目里一些老的代码逻辑和结构的时候,发现了一段观察者的代码。脑海里同时浮现出这样一个故事……

有一个女孩和一个男孩,他们在山里迷路了。晚上,他们都精疲力尽。男孩对女孩说,你睡会吧,我看着,有动静我叫你,然而……

JAVA
/**
 * Java小故事,不舍得叫醒女孩的男孩
 * <p>
 * 有一个女孩和一个男孩,他们在山里迷路了。<br>
 * 晚上,他们都精疲力尽。男孩对女孩说,你睡会吧,我看着,有动静我叫你。<br>
 * 然而……
 * 
 * @author lihzh
 * @alia OneCoder
 * @blog http://www.coderli.com
 */
public class ObserverBoyAndGirlMain {

	/**
	 * @author lihzh
	 * @alia OneCoder
	 */
	public static void main(String[] args) {
		Boy boy = new Boy();
		Girl girl = new Girl();
		// 让女孩监听男孩的消息
		boy.addObserver(girl);
		try {
			// 然而,八个小时过去了,男孩的腿虽然已经被压得麻木了。
			Thread.sleep(8 * 60 * 60 * 1000L);
			// 但是,你舍得叫醒她么?:)
			// boy.wakeupGirl();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 男孩,观察周围的动静,有问题发出信号
	 * 
	 * @author lihzh
	 * @alia OneCoder
	 */
	public static class Boy extends Observable {
		/**
		 * 叫醒女孩
		 * 
		 * @author lihzh
		 * @alia OneCoder
		 */
		public void wakeupGirl() {
			setChanged();
			notifyObservers("");
		}
	}

	/**
	 * 女孩,睡着了,如果男孩叫她,则会醒来
	 * 
	 * @author lihzh
	 * @alia OneCoder
	 */
	public static class Girl implements Observer {
		@Override
		public void update(Observable o, Object arg) {
			System.out.println("Thank you, I'm up.");
		}
	}
}
💡 OneCoder 资源指引

所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI

🤝 技术交流与答疑

欢迎加入:C++ GESP/CSP 考级答疑群(688906745)Java/Python交流群(982860385),点击可直接加群。

📚

猜你想读 · 相关文章推荐

OneCoder

OneCoder (lihongzheshuai)

一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com

💬 读者留言与交流

0 条讨论
✨ 支持 Markdown 语法格式
还没有留言,快来成为第一个讨论者吧!