2010-02-14 89 views
0

一些解釋:有幾臺機器(主機)需要通知某些資源計算機上某些數據的任何更改。資源機器全時檢查數據,如果發生任何更改,則通知所有監聽者。什麼是適用於通知系統的設計模式?

據我所知我應該使用觀察者模式,可能是Absrtact工廠的泛化,還有什麼?

據我所知資源機器應該用作服務器(java.net.serversocket)作爲客戶端(java.net.socket)發送特殊消息給偵聽器並獲取請求?所有其他機器都需要作爲服務器(接收關於數據更改的消息)作爲客戶端(發送請求以獲取新數據)。我對嗎?

也許你可以解釋我的任何其他方面的實現通知系統?可能它使用JMX很有用,但我認爲這個問題太龐大了?

+1

模式描述軟件,他們沒有實現它們。 – Pod 2010-02-14 13:23:02

回答

1

你可以看看像RPC。這使您可以實現觀察者模式,但接收對象被放置在另一個主機上。

這樣,觀察者在不同主機上的事實對其餘代碼是透明的。

1

那麼,這幾乎描述了觀察者模式。

某種工廠可能最終需要創建與「服務器」上的每個遠程計算機關聯的客戶端對象。

這就是說,試圖找出什麼樣的設計模式可以應用於問題的前期往往是錯誤的選擇。

0

某些時候發佈者訂閱者是實現通知系統的最佳方式。

1

我不認爲你應該在設計模式,通知(如你設想你的系統)和JMX的同時。你正在混合和來自整個過程完全不同層次的事物。這些模式並不直接應用於整個系統,JMX也不是一個特定類別系統的實現。深入研究並不會對你有所幫助。我認爲你首先應該更多地考慮你想要構建的系統,因爲在我看來,你首先通過探索抽象的構造模式和特定的技術來試圖找出你想要構建的東西。它應該是相反的。 Pod對你的問題發表了評論。這就好比你正在設計一輛汽車,並在決定懸架類型或底盤甚至汽車類型之前詢問有關輪胎品牌和汽輪機類型的信息。