2012-07-24 59 views
2

在您的應用程序中使用全局事件總線是否是一種糟糕的設計?
如何確保最終不會有緊密耦合的組件在整個應用程序中彼此交談?
你能想到Java世界中的機制/工具/庫來強制執行一些規則嗎?
有一個全球性事件公共汽車的警告是什麼?

+0

什麼是應用程序? – 2012-07-24 08:19:41

+0

GWT Web應用程序,但這不是很重要。 – n0rm1e 2012-07-24 08:20:09

回答

4

全局事件總線的問題,即應用程序中每個組件(類或對象)都可訪問的事件總線的問題在於,您無法控制將使用事件總線的人員。

如果您是唯一的開發人員或正在與緊密團隊合作,可以就組件可以使用事件總線的條件達成一致。否則所有酒吧關閉。

話雖如此,應該有可能與事件總線溝通,否則它是毫無意義的。通過引入事件總線的代理人負責事件的實際觸發,您可以控制依賴於代理的人員。

通過使用依賴注入(通過類似guice或手動滾動的框架),您可以自動提供代理狀態,使事件總線的依賴性顯式化。

+0

這種方法看起來很合理。您可以硬編碼/配置誰可以使用此事件總線進行通話。爲了強化相關組件之間的隔離通信,您可能需要本地事件總線。我覺得這很難配置Guice(在不同的上下文中連接同一事物的不同實例),否則我可能會錯過某些東西。 – n0rm1e 2012-07-24 14:45:06

相關問題