2009-04-27 11 views
8

Me encontré tratando de encontrar un enlace a una definición oficial de este patrón de diseño que creo que vi en Go4 pero parece que no puede encontrarlo en ninguna parte.¿Cómo se llama este patrón (ayuda a evitar el tipo de fundición)?

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); 
    } 
} 

Respuesta

13

Es el Visitor Pattern. La técnica se llama "doble despacho".

+0

Me gustó la primera versión de su respuesta mejor. Este _es_ Doble Despacho. El patrón Visitor agrega la noción de _multiple_ Visitantes (llamado "Procesador" en mi ejemplo). – zvolkov

+0

Cambié el énfasis ya que el título solicita el "patrón", y la pregunta se refiere a GoF. – erickson

Cuestiones relacionadas