Java小故事 不捨得叫醒女孩的男孩 觀察者模式
阿新 • • 發佈:2018-12-23
今天在梳理專案裡一些老的程式碼邏輯和結構的時候,發現了一段觀察者的程式碼。腦海裡同時浮現出這樣一個故事……
有一個女孩和一個男孩,他們在山裡迷路了。晚上,他們都精疲力盡。男孩對女孩說,你睡會吧,我看著,有動靜我叫你,然而……
/**
* 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.");
}
}
}