2010-03-11 23 views
0

假設您在網絡的另一端有一個系統,用於發送需要緩存到某個中間代理的事件和數據。單身網絡事件處理器可以嗎?

而不是給需要被告知這樣的事件一個新訂閱的經紀人,我決定性能和簡單(即處理經紀人訂閱心不是漂亮的第三方庫)的應用程序的每一個組件,我應該只有一個事件處理器,用於訂閱代理並以編程方式觸發事件,因爲它將事件接收到組件提供的訂閱偵聽器。緩存的數據也可以從這個單身人士共享。這將大大減少網絡連接。

然而,根據大多數關於單身人士的討論,除非出於併發原因或硬件原因,您只需要一個接入點,否則他們總是邪惡的PERIOD。這不是我的情況,因爲每個組件都可以擁有自己的訂閱和自己的個人數據緩存,因爲可以通過代理請求所有數據。但是,這可以輕鬆添加200個以上的網絡連接。

因爲單身人士是邪惡的這是否意味着200多個連接到經紀人與200個副本的數據比使用單身人士更好我不需要使用?畢竟這會讓事情變得相當緩慢,但它不是遊戲突破,應用程序仍然可用。

回答

1

您的代理客戶端對象服務於您的流程中的多個客戶端沒有任何內在錯誤。

所有關於單身人士都是邪惡的說法實際上是關於全局變量是邪惡的。單身人士變得邪惡,因爲它提供了一個static接入點到可變狀態,而不是因爲它只有一個實例。

有鑑於此,您可能想使用依賴注入來掛鉤它而不是調用Broker.getInstance()。這避免了客戶端代碼假設它實際上是一個單身人士。

相關問題