2009-01-16 31 views
0

我在Java中重新實現了一個.Net API,API指定了一大堆事件,但是java並沒有隱式支持。Java事件:這是一個好方法嗎?

我打算使用觀察者模式,但由於事件的數量,我實際上不想混亂界面。

我想知道是否是一個好主意,聲明一個具有「EventHandler接口」和throw方法的訂閱方法的「Event」類。

這樣我就不會因爲個別事件處理它們而讓我的父類有很多用戶列表混亂。

我能看到的唯一問題是throw命令的參數,因爲不同的事件會有不同的參數。

我想到的解決方案是讓throw方法接受一個對象數組,或者創建一個接口,如IEventArguemnts,這個接口可以傳遞給throw命令並由訂閱了事件的代碼處理似乎對我更有意義。

我很感激任何改善這方面的建議。或者任何改進。

回答

2

Java擁有事件以及對事件的API支持。查看java.util包。你會看到java.util.EventListenerjava.util.EventObject和其他一些。還有支持維護訂閱者的類等。例如,AWT和Swing API基本上是基於事件的。

通常,addXxxListener(XxxListener l)方法(即訂閱方法)將繼續觸發事件的類,而不是事件類本身。事件是消息,這是從發佈者到訂閱者被解僱的內容。

+0

對,如果你使用這個,你不需要Observer。這也是我的建議。 – duffymo 2009-01-16 15:08:59

0

爲什麼不使用JavaBeans事件模型?如果所有的對象都在同一個JVM中運行,那麼這樣可以正常工作。

Peter Coad對改進Java Observer模型有一些想法。也許你會發現這些幫助。

相關問題