我发现自己试图找到此设计模式的正式定义的链接,我相信我在Go4中看到了它,但似乎在任何地方都找不到。
class Processor{
ProcessParameter(AbstractParameter x){
x.Process(this);
}
ProcessParameter(ParameterA x){
... A-specific logic...
}
ProcessParameter(ParameterB x){
... B-specific logic...
}
}
abstract class AbstractParameter{
abstract void Process(Processor p);
}
class ParameterA : AbstractParameter{
override void Process(Processor p){
p.ProcessParameter(this);
}
}
class ParameterB : AbstractParameter{
override void Process(Processor p){
p.ProcessParameter(this);
}
}
最佳答案
它是Visitor Pattern。该技术称为“双重调度”。
关于language-agnostic - 此模式称为什么(有助于避免类型转换)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/794503/