【问题标题】:What is this pattern called (helps avoid type casting)?这种模式叫什么(有助于避免类型转换)?
【发布时间】:2009-04-27 17:37:01
【问题描述】:

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

【问题讨论】:

    标签: language-agnostic design-patterns oop


    【解决方案1】:

    它是Visitor Pattern。该技术称为“双重调度”。

    【讨论】:

    • 我更喜欢您回答的第一个版本。这双重调度。访问者模式添加了 多个 访问者的概念(在我的示例中称为“处理器”)。
    • 我切换了重点,因为标题要求“模式”,而问题是指GoF。
    猜你喜欢
    • 2014-05-24
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 2016-02-06
    • 1970-01-01
    相关资源
    最近更新 更多