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
- Diomidis Spinellis (2003). Lettura del codice : la prospettiva open source . Boston, MA: Addison-Wesley. ISBN 0-201-79940-5