En informática , una tabla de despacho es una tabla de punteros o direcciones de memoria a funciones o métodos . [1] El uso de dicha tabla es una técnica común al implementar el enlace tardío en la programación orientada a objetos .
Implementación de Perl
A continuación se muestra una forma de implementar una tabla de despacho en Perl , utilizando un hash para almacenar referencias al código (también conocidos como punteros de función ).
# Defina la tabla utilizando una referencia de código anónima y una referencia de código nombrada
my %dispatch = ( "-h" => sub { return "hello\n" ; }, "-g" => \& say_goodbye ); sub say_goodbye { return "goodbye\n" ; } # Obtenga la referencia de código de la tabla e invoquela my $sub = $dispatch { $ARGV [ 0 ]}; print $sub ? $sub -> () : "argumento desconocido\n" ;
Ejecutar este programa Perl como perl greet -hproducirá "hola", y ejecutarlo como perl greet -gproducirá "adiós".
Implementación de JavaScript
A continuación se muestra una demostración de cómo implementar la tabla de despacho en JavaScript:
var thingsWeCanDo = { doThisThing : función () { /* comportamiento */ }, doThatThing : función () { /* comportamiento */ }, doThisOtherThing : función () { /* comportamiento */ }, predeterminado : función () { /* comportamiento */ } };
var doSomething = function ( doWhat ) { var thingToDo = thingsWeCanDo . hasOwnProperty ( doWhat ) ? doWhat : "predeterminado" thingsWeCanDo [ thingToDo ](); }
Tablas de métodos virtuales
En los lenguajes de programación orientados a objetos que admiten métodos virtuales , el compilador creará automáticamente una tabla de distribución para cada objeto de una clase que contenga métodos virtuales. Esta tabla se denomina tabla de métodos virtuales o vtable , y cada llamada a un método virtual se distribuye a través de la vtable.
Véase también
Referencias
- ^ Goldfuss, Alice. "Tablas de despacho de funciones en C". alicegoldfuss.com . Consultado el 23 de enero de 2021 .
- Diomidis Spinellis (2003). Lectura de código : la perspectiva del código abierto . Boston, MA: Addison-Wesley. ISBN 0-201-79940-5