8
Mi sono trovato a cercare un collegamento a una definizione ufficiale di questo modello di progettazione che credo di aver visto in Go4 ma che non riesco a trovare da nessuna parte.Come si chiama questo modello (aiuta a evitare il casting di caratteri)?
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);
}
}
Mi è piaciuta la prima versione della risposta. Questo _is_ Double Dispatch. Il pattern Visitor aggiunge la nozione di _multiple_ Visitors (chiamata "Processore" nel mio esempio). – zvolkov
Ho cambiato l'enfasi poiché il titolo richiede il "pattern" e la domanda si riferisce a GoF. – erickson