3

2 つのパラメーターを持つメソッドがあるとします。私はそれらを次のように実装しています:

if(aObj instance of Marble)   {
   if(bObj instance of Bomb)   {
      this.resolve((Marble)aObj,(Bomb)bObj);
   }
}

ご覧のとおり、あまりきれいなソリューションではありません。私は二重ディスパッチを使用して実装する予定ですが、両方とも二重ディスパッチが必要な 2 つのパラメーターがあるため、少し困惑しています。アイデアをください。

私はところでJavaで実装しています。

4

1 に答える 1

1

可能であれば、訪問者パターンを使用します。

つまり、メソッドを定義するクラス (または各タイプのメソッド)は、visitor と呼ばれるインターフェースを実装します。instance-of チェックを行う代わりに、object.accept(this) を呼び出します。次に、オブジェクトは訪問者の正しい「visit」メソッドを呼び出します。

于 2010-05-19T10:04:08.900 に答える