Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有两个参数的方法,这两个参数都需要双重调度_Java_Design Patterns_Instanceof_Double Dispatch - Fatal编程技术网

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

Java 具有两个参数的方法,这两个参数都需要双重调度,java,design-patterns,instanceof,double-dispatch,Java,Design Patterns,Instanceof,Double Dispatch,假设我有一个有两个参数的方法。我一直在实施这些措施: if(aObj instance of Marble) { if(bObj instance of Bomb) { this.resolve((Marble)aObj,(Bomb)bObj); } } 正如你所见,这不是一个很好的解决方案。我计划使用双重调度来实现,但由于有两个参数都需要双重调度,我恐怕有点为难了。有什么想法吗 顺便说一句,我是用java实现的。如果可能的话,我会同意 也就是说,定义方法(或者

假设我有一个有两个参数的方法。我一直在实施这些措施:

if(aObj instance of Marble)   {
   if(bObj instance of Bomb)   {
      this.resolve((Marble)aObj,(Bomb)bObj);
   }
}
正如你所见,这不是一个很好的解决方案。我计划使用双重调度来实现,但由于有两个参数都需要双重调度,我恐怕有点为难了。有什么想法吗


顺便说一句,我是用java实现的。

如果可能的话,我会同意


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

yeah。问题是被访问对象从访问者调用该方法。问题是访问者中的方法需要参数,另一个参数也需要实现访问者模式..我明白了。我想你也可以让其中一个参数实现访问者接口,然后简单地解决另一个参数(通过访问它),然后访问原始访问者。