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 una tabla de este tipo es una técnica común cuando se implementa 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 distribución en Perl , utilizando un hash para almacenar referencias al código (también conocido como punteros de función ).
# Defina la tabla usando un código-ref anónimo y uno llamado code-ref my % dispatch = ( "-h" => sub { return "hello \ n" ; }, "-g" => \ & say_goodbye ); sub say_goodbye { return "adiós \ n" ; } # Obtener el código de referencia de la tabla e invocarlo my $ sub = $ dispatch { $ ARGV [ 0 ]}; imprimir $ sub ? $ sub -> () : "argumento desconocido \ n" ;
Ejecutar este programa Perl como perl greet -h
producirá "hola", y ejecutarlo como perl greet -g
producirá "adiós".
Implementación de JavaScript
A continuación se muestra una demostración de la implementación de la tabla de despacho en JavaScript:
var thingsWeCanDo = { doThisThing : function () { / * comportamiento * / }, doThatThing : function () { / * comportamiento * / }, doThisOtherThing : function () { / * comportamiento * / }, predeterminado : function () { / * 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étodo virtual o vtable , y cada llamada a un método virtual se envía a través de vtable.
Ver 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