我写了访问者模式如下,但我不明白什么是单一和双重调度。 AFAIK,单调度调用基于调用者类型的方法,其中双调度调用基于调用者类型和参数类型的方法。单双发货单是什么?
我猜double dispatch发生在单个类层次结构中,但为什么访客类有两个类层次结构,但它仍然被认为是双重调度。
void floppyDisk::accept(equipmentVisitor* visitor)
{
visitor->visitFloppyDisk(this);
}
void processor::accept(equipmentVisitor* visitor)
{
visitor->visitProcessor(this);
}
void computer::accept(equipmentVisitor* visitor)
{
BOOST_FOREACH(equipment* anEquip, cont)
{
anEquip->accept(visitor);
}
visitor->visitComputer(this);
}
void visitFloppyDisk(floppyDisk*);
void visitProcessor(processor*);
void visitComputer(computer*);
请使用我提供的示例代码来解释。
AFAIK,第一次调度发生在调用accept的对象上,第二次调度发生在调用visit方法的对象上。
谢谢。
也许阅读这篇[文章](http://en.wikipedia.org/wiki/Multiple_dispatch)可以帮助你理解派遣 - 而不是它是如何在C++中实现的,但是概念 – 2010-07-16 08:37:56