double-dispatch相关内容

C++ 中的双重调度/多方法

我有一个关于 C++ 双重调度的问题.在下面的代码中,我希望第二组的结果与第一组的结果相匹配. 我不知道实际类型(除非我尝试使用 dynamic_cast),但我知道该对象是从 BaseClass 类型继承的.实现此目标的最有效(在性能方面)的方法是什么? 在谷歌上搜索了一段时间后,我发现了双重调度和 loki 多方法.我在 Shape 示例中遇到的问题是,在我的应用程序中,Proce ..

访问者模式与访问者模式之间的差异双发

我正在阅读关于访问者模式的信息,它看起来与 Double Dispatch 相同.两者有什么区别吗.这两个词的意思是一样的. 参考:http://www.vincehuston.org/dp/visitor.html 解决方案 简而言之 它们来自不同的概念,在一些本地不支持双分派的语言中,导致访问者模式作为连接两个(或更多)单分派的一种方式,以便有一个多分派代理. 长期 ..
发布时间:2021-12-22 08:48:06 其他开发

C#中的双重调度?

我听说过/读过这个词,但不太明白它的意思. 我应该什么时候使用这种技术以及我将如何使用它?谁能提供一个好的代码示例? 解决方案 访问者模式是一种以面向对象的方式进行双重调度的方式. 当您想在运行时而不是编译时根据给定参数的类型选择用于给定参数的方法时,它很有用. 双分派是多分派的特例. 当您在对象上调用虚拟方法时,这被视为单分派,因为调用的实际方法取决于单个对象的类 ..
发布时间:2021-12-22 08:40:39 C#/.NET

C++ 双调度 Equals()

假设我有 抽象基类 Shape,带有派生类Circle 和Rectangle. class Shape {};类圆:公共形状{};类矩形:公共形状{}; 我需要确定两个形状是否相等,假设我有两个 Shape* 指针.(这是因为我有两个 vector 实例,我想看看它们是否具有相同的形状.) 推荐的方法是双重调度.我想出的是这个(这里大大简化,所以形状等于所有其他相同类型的形状): 类形 ..
发布时间:2021-12-17 19:37:45 C/C++开发

C ++双重派遣问题

这是我之前问过的问题的第2部分:使用Wiki示例,我创建了此示例. http://en.wikipedia.org/wiki/Double_dispatch 我的问题是,编译后的代码从不查找vtable,并且始终使用基类而不是继承的类.这是我的代码: #include class xEntity; class xVehicle; class xMapObjec ..
发布时间:2020-07-21 20:22:55 C/C++开发

Java中的双调度示例

我正在阅读 DD 上的Wikipedia文章,然后跳到" Java中的双重分发和示例"链接.下面的Serializable示例的描述对我来说似乎很混乱: A a = new A(); ObjectOutputStream oos = new ObjectOutputStream(); oos.writeObject( a); 这里是描述: 为了序列化A,ObjectOutputSt ..
发布时间:2020-07-21 20:22:53 Java开发

如何使用扩展构建双重调度

我有一个图书馆,图书馆的课程层次结构如下: class Base {} class A : Base {} class B : Base {} 现在我想根据对象的类型(是A还是B)做不同的事情. 因此,我决定去执行双重调度,以避免检查类型. class ClientOfLibrary { public DoStuff(Base anObject) { ..
发布时间:2020-07-21 20:21:49 C#/.NET

在法鲁的双重派遣

有人可以解释一下使用Smalltalk在Pharo 4.0中进行双重分发的过程吗?我是Smalltalk的新手,很难理解这个概念,因为与Smalltalk相比,它在Java中的实现方式非常不同.如果有人可以举一个例子来解释它,将非常有帮助. 解决方案 从本质上讲,您的想法是: #addInteger:知道如何添加整数, #addFloat:知道如何添加浮点数, 依此类推... ..
发布时间:2020-07-21 20:21:46 其他开发

多态与多重分派有什么区别?

...还是同一回事?我注意到每个人都有自己的Wikipedia条目:多态, 编辑:超载如何适应所有这一切? ? 解决方案 多态性是一种工具,它允许语言/程序在运行时根据发送给该方法的参数类型来决定要调用的方法. 语言/运行时使用的参数数量决定了语言支持的多态性的“类型". 单派发是一种多态性,其中仅使用一个参数(消息的接收方-this或self)来确定呼叫. 多重调度是一 ..
发布时间:2020-05-20 00:59:52 其他开发

用Java进行多态调度

在下文中,我希望EventHandler以一种方式处理EventA,以另一种方式处理EventB,以及另一种方式处理任何其他事件(EventC,EventD)。 EventReceiver仅接收对Event的引用并调用EventHandler.handle()。当然,总是被调用的版本是EventHandler.handle(事件事件)。 不使用instanceOf,是否有一种多态分派的方法( ..
发布时间:2018-12-26 13:50:29 Java开发

Java方法重载+双重调度

任何人都可以详细解释在使用 Child 时调用重载方法 print(父父级)的原因在我的测试代码中的实例? 这里涉及的Java中的任何虚拟方法或方法的重载/解决方案都是什么? 是否直接引用Java Lang Spec? 哪个术语描述了这种行为? 非常感谢。 public class InheritancePlay { public static class Parent ..
发布时间:2018-11-27 13:09:18 Java开发

如何使用双重调度分析图形基元的交集?

我分析了图形基元(矩形,直线,圆等)与计算重叠,相对方向,合并等的交互作用。这被称为Double Dispatch的一个主要例子(例如 Wikipedia ) 自适应碰撞算法通常要求以不同方式处理 个不同对象之间的冲突。一个典型的例子是在游戏环境中 ,其中太空船和 小行星之间的碰撞计算与 太空船和太空站之间的碰撞不同。 /en.wikipedia.org/wiki/Double_di ..
发布时间:2018-05-25 19:29:00 Java开发

游客选择如何穿越的游客模式

据了解,在访问者模式的典型规范中,被访问对象决定如何遍历,通常它们只支持一个遍历顺序。 (例如,参见此处或这里。) 是否有同样使用双重调度的名称,但访问者访问决定如何遍历对象层次结构?在我的应用程序中,非常异质的文件模型类型集合正在推动访问者,例如出口业务。不过,似乎很难说,各种处理器(访客)都应该遍历,比如说一个宽度一级的顺序。其中一些可能只关注模型的一个子集,或者可能需要以特定的排序来处 ..
发布时间:2017-05-16 18:35:16 软件设计

双重派遣在访客模式中如何工作?

我正在研究与访问者模式有关的其他问题,但无法理解访客模式中双重调度的实现。 请参阅链接 访问者模式 双重派遣如何工作在访客模式中 解决方案 元素对象的接受方法接收访问者对象,它调用访问对象的访问方法。由于访问者对象有几个访问方法,基于元素类型,调用适当的访问方法。在这里,我们为元素指定了元素和操作两个调用(双调度)(根据其类型)。 ..
发布时间:2017-05-14 10:12:49 Java开发

访客模式与双发

我正在阅读关于访客模式,它看起来像双重派对一样。两者之间有什么区别吗? 这两个术语意思相同。 参考: http://www.vincehuston.org/dp/visitor.html 解决方案 简而言之, h2> 他们来自于不同的概念化,在某些语言中,双调度不是本机支持的,导致访问者模式作为将两个(或多个)单个调度连接起来的一种方式订单要有一个多调度代理。 在长的 ..
发布时间:2017-05-14 09:16:12 软件设计