Java小故事 不舍得叫醒女孩的男孩 观察者模式
今天在梳理项目里一些老的代码逻辑和结构的时候,发现了一段观察者的代码。脑海里同时浮现出这样一个故事……
有一个女孩和一个男孩,他们在山里迷路了。晚上,他们都精疲力尽。男孩对女孩说,你睡会吧,我看着,有动静我叫你,然而……
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/**
* 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.");
}
}
}
本文由作者按照 CC BY 4.0 进行授权