代码之家  ›  专栏  ›  技术社区  ›  Andriy Volkov

这个模式叫什么(帮助避免类型转换)?

  •  8
  • Andriy Volkov  · 技术社区  · 16 年前

    发现自己试图找到一个链接到这个设计模式的官方定义,我相信我在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 回复  |  直到 16 年前
        1
  •  13
  •   erickson    16 年前

    它是 Visitor Pattern . 这种技术被称为“双重调度”。