Expediční tabulka - Dispatch table
v počítačová věda, a odesílací tabulka je tabulka ukazatele k funkcím nebo metody. Použití takové tabulky je běžnou technikou při implementaci pozdní vazba v objektově orientované programování.
Implementace Perlu
Následující příklad ukazuje jeden způsob implementace tabulky odeslání Perl, používat hash k ukládání odkazů na kód (také známý jako ukazatele funkcí ).
# Definujte tabulku pomocí jednoho anonymního kódového odkazu a jednoho pojmenovaného kódového odkazumůj %odeslání = ( "-h" => sub { vrátit se „ahoj n“; }, "-G" => \&Řekni sbohem); sub Řekni sbohem { vrátit se "sbohem n";} # Načíst kód ref z tabulky a vyvolat jejmůj $ sub = $ odeslání{$ ARGV[0]};tisk $ sub ? $ sub->() : "neznámý argument n";
Spuštění tohoto programu Perl jako perl pozdravit -h
bude produkovat "ahoj" a bude to fungovat jako perl pozdravit -g
vyprodukuje „sbohem“.
Implementace JavaScriptu
Následuje ukázka implementace expediční tabulky v JavaScriptu:
var thingsWeCanDo = { dělat toto : funkce() { / * chování * / }, dělat to : funkce() { / * chování * / }, doThisOtherThing : funkce() { / * chování * / }, výchozí : funkce() { / * chování * / }};var dělej něco = funkce(Dělejte to, co) { var thingToDo = thingsWeCanDo.hasOwnProperty(Dělejte to, co) ? Dělejte to, co : "výchozí" thingsWeCanDo[thingToDo]();}
Virtuální tabulky metod
v objektově orientovaný programovací jazyky ta podpora virtuální metody, překladač automaticky vytvoří odesílací tabulku pro každý objekt a třída obsahující virtuální metody. Tato tabulka se nazývá a tabulka virtuálních metod nebo vtablea každé volání virtuální metody je odesláno prostřednictvím vtable.
Viz také
Reference
- Diomidis Spinellis (2003). Čtení kódu: Perspektiva otevřeného zdroje. Boston, MA: Addison-Wesley. ISBN 0-201-79940-5