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 つしかない場合は「OK」ですが、アクションが 50 個ある場合はどうなりますか。

他のソリューション (クロス プラットフォーム) は何ですか?

4

1 に答える 1

0

単一のメソッドで汎用メッセージ ハンドラー インターフェイスを定義できます。

  interface MessageHandler {
     void handleMessage(String parameter);
  }

次に、メッセージの種類ごとに 1 つのハンドラーで、ハンドラーのレジストリを作成できます。レジストリは、次のようなインターフェースを持つことができます。

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

内部的に、ハンドラー レジストリは、文字列 (ハンドラー タイプ) を適切な MessageHandler オブジェクトにマップするマップを格納できます。このようにして、長い if-else または switch ステートメントを回避し、コードを簡単に拡張して新しいタイプのメッセージを処理できます。

于 2012-09-10T18:56:41.317 に答える