2011-11-18 57 views
0

我正在做一個聊天應用程序。我的更新問題在於: 我有用於存儲Component實例的Core類。設計模式與聊天應用程序

當收到新消息時,Core將調用Component的方法,它將更新屏幕。

當新消息必須發送(在Component窗格中鍵入)組件如何通知Core?

對我來說(我可能錯了),組件將有一個核心實例,以便發送更新到它(同樣的事情會發生在觀察者模式)。 這可能是一個直接的解決方案,但我現在無法弄清楚。歡迎任何建議。它就像我需要的雙向觀察者模式。

+1

如果Core和Component都實現內置的Java Observer模式,它會是一個有效的解決方案嗎? – Giannis

回答

1

基本上,如果你有一個數據源和一個接收器,並且你想確保它們之間的鬆散耦合,觀察者模式總是很好用。

如果你的Core類直接存儲你的組件的一個實例,你不需要在它們之間有一個額外的觀察者模式,因爲Core類可以直接調用你的組件的方法,對嗎?

因此,您需要Core和Component之間發送消息的任何連接/間接關聯,並且您應該使用Observer。當您創建實例時,您可以將自己作爲觀察者傳遞給組件。

但實際上,我認爲它是一個重要的設計問題,在你的架構,你應該使用MVC這類應用:

MVC

在這種情況下,你必須分裂核心的控制器(處理UI交互,即發送/接收消息)和模型(存儲消息和元數據,可能是應用程序邏輯)。你的組件將是View類。

+0

基本上這個組件是一個抽象類,它可能會在運行期間被改變,但是當我發佈了一個問題,我並不真的需要Observer將消息發送到組件時,我想到了。儘管它需要從組件向核心發送數據?感謝指出這種模式生病檢查它。 – Giannis

+0

是的,您可以使用它來將數據從組件發送到核心,並使用鬆散耦合來避免循環依賴。 MVC以類似Observer的方式解決了這個問題,從View到Controller和Model到View有一個Observer模式(並不總是依賴於你的底層工藝) – philomatic