1. 程式人生 > >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."); } } }