1

我正在寻找一种处理字符串类型(跨平台)的不同类型消息的好方法。

想象下一个场景:

我们有一个方法: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 个动作是“可以的”,但如果有 50 个动作呢?

还有哪些其他解决方案(跨平台)?

4

1 回答 1

0

您可以使用单个方法定义通用消息处理程序接口

  interface MessageHandler {
     void handleMessage(String parameter);
  }

然后,您可以拥有一个处理程序注册表,每种类型的消息都有一个处理程序。注册表可以有这样的接口:

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

Internally, handlers registry can store a map that would map a string (handler type) to an appropriate MessageHandler object. This way you avoid long if-else or switch statements and you can easily extend the code to handle new types of messages.

于 2012-09-10T18:56:41.317 回答