这种模式叫什么名字(有助于避免类型转换)?

8

我发现自己试图寻找一个官方定义这种设计模式的链接,我相信我在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);
    }
}
1个回答

13

我更喜欢你的第一个答案版本。这就是双重分派。访问者模式增加了多个访问者(在我的示例中称为“处理器”)的概念。 - Andriy Volkov
我更改了重点,因为标题要求“模式”,而问题涉及GoF。 - erickson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接