2012-07-19 78 views
1

我正在尋找一種很好的方式來處理不同類型的字符串消息(跨平臺)。消息代理不同消息類型的字符串

想象在下一個場景:

我們有一個方法:onMessageReceive(String message)
參數 值: 'order.new:1' 或 'orderstatus.update:12' 等

現在我們可以拆分在「行動」和「參數」通過分隔符消息「:」

String action = 'order.new' 
String parameter = '1' 

我們可以把這個在if-else聲明

if (message.equels("order.new") { 
    // get the order 

} else if (message.equels("orderstatus.update") { 
    // get the new order status<br/> 
} 

但我不喜歡這種方式。如果只有2個動作,但是如果有50個動作,則是「OK」。

什麼是其他解決方案(跨平臺)?

回答

0

您可以定義一個通用的消息處理程序接口與一個單一的方法

interface MessageHandler { 
    void handleMessage(String parameter); 
    } 

然後,你可以有處理程序的註冊表,每種類型的消息的一個處理程序。註冊表可以有一個這樣的接口:

class HandlersRegistry { 
     public MessageHandler getHandler(String handlerType); 
     public void addHandler(String handlerType, MessageHandler handler); 
    } 

在內部,處理程序的註冊表可以存儲地圖,將地圖字符串(處理器類型),以適當的MessageHandler對象。這樣,您可以避免if-else或switch語句過長,並且您可以輕鬆擴展代碼以處理新類型的消息。

相關問題