我正在寻找一种很好的方法来处理不同类型的字符串(跨平台)类型的消息。
想象一下下一个场景:
我们有一个方法:onMessageReceive(String message)
参数值:'order.new:1'或'orderstatus.update:12'等
现在我们可以通过分隔符':'
将信息拆分为'action'和'parameter'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个动作则“ok”,但如果有50个动作则该怎么办。
其他解决方案是什么(跨平台)?
答案 0 :(得分: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语句,并且可以轻松扩展代码以处理新类型的消息。