觀察者模式Java版 http://blog.csdn.Net/nyzhl/archive/2007/12/09/1926130.ASPx
在Java中實現觀察者模式,需要在被觀察者中持有所有觀察者的引用,這樣觀察者和被觀察對象之間存在一定的耦合,只有實現觀察者接口的類的對象才可以注冊到被觀察者中,不夠靈活。
也許是我在吹毛求疵,因為Java已經做的很好了,但是在C#中,有更好的解決方法-Deleget & Event 。
被觀察對象不再需要持有觀察者的引用,只需要定義一個事件,而委托 事件是與類型無關的,它可以指向任意類的某個函數(當然要符合委托的返回值,參數聲明),非常靈活,消除了觀察者和被觀察對象的耦合。
還是昨天的例子:鬧鐘(被觀察對象)響(發送消息),人(觀察者)被驚醒(做出響應)。