2012-07-19 88 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语句过长,并且您可以轻松扩展代码以处理新类型的消息。