具有两个参数的方法,这两个参数都需要双重调度

时间:2010-05-19 09:57:48

标签: java design-patterns instanceof double-dispatch

假设我有一个有两个参数的方法。我一直在实施它们:

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

你可以看到它不是一个非常漂亮的解决方案。我计划使用双调度实现,但有两个参数都需要双重调度,我担心我有点难过。任何想法,请。

我在java btw中实现。

1 个答案:

答案 0 :(得分:1)

如果可能,我会选择the visitor pattern

也就是说,定义方法的类(或者更确切地说,每种类型的方法 s )实现了一个名为visitor的接口。然后调用object.accept(this)而不是执行检查实例。然后该对象调用访问者的正确“访问”方法。