Tabella di spedizione - Dispatch table

In informatica , una tabella di invio è una tabella di puntatori o indirizzi di memoria a funzioni o metodi . L'uso di tale tabella è una tecnica comune quando si implementa l' associazione tardiva nella programmazione orientata agli oggetti .

Implementazione di Perl

Quanto segue mostra un modo per implementare una tabella di invio in Perl , utilizzando un hash per memorizzare i riferimenti al codice (noto anche come puntatori a funzione ).

# Define the table using one anonymous code-ref and one named code-ref
my %dispatch = (
    "-h" => sub {  return "hello\n"; },
    "-g" => \&say_goodbye
);
 
sub say_goodbye {
    return "goodbye\n";
}
 
# Fetch the code ref from the table, and invoke it
my $sub = $dispatch{$ARGV[0]};
print $sub ? $sub->() : "unknown argument\n";

L'esecuzione di questo programma Perl come perl greet -h produrrà "ciao", e eseguirlo come perl greet -g produrrà "arrivederci".

Implementazione di JavaScript

Di seguito è riportata una demo sull'implementazione della tabella di invio in JavaScript:

var thingsWeCanDo = {
    doThisThing      : function() { /* behavior */ },
    doThatThing      : function() { /* behavior */ },
    doThisOtherThing : function() { /* behavior */ },
    default          : function() { /* behavior */ }
};

var doSomething = function(doWhat) {
    var thingToDo = thingsWeCanDo.hasOwnProperty(doWhat) ? doWhat : "default"
    thingsWeCanDo[thingToDo]();
}

Tabelle dei metodi virtuali

Nei linguaggi di programmazione orientati agli oggetti che supportano i metodi virtuali , il compilatore creerà automaticamente una tabella di invio per ogni oggetto di una classe contenente metodi virtuali. Questa tabella è chiamata tabella del metodo virtuale o vtable e ogni chiamata a un metodo virtuale viene inviata tramite vtable.

Guarda anche

Riferimenti