Dispatch table
From Wikipedia, the free encyclopedia
It has been suggested that this article or section be merged with Virtual method table. (Discuss) |
In computer science, a dispatch table is a table of pointers to functions or methods. Use of such a table is a common technique when implementing late binding in object-oriented programming.
[edit] Perl implementation
The following shows one way to implement a dispatch table in Perl, using a hash to store references to code (also known as function pointers).
#define the table using one anonymous code-ref and one named code-ref
my %dispatch = (
"-h" => sub { print "hello\n"; },
"-g" => \&say_goodbye
);
sub say_goodbye {
print "goodbye\n";
}
#fetch the code ref from the table, and invoke it
my $sub = $dispatch{$ARGV[0]};
print $sub ? $sub->() : "unknown argument\n";
Running this Perl program as perl greet -h
will produce "hello", and running it as perl greet -g
will produce "goodbye".
[edit] Virtual method tables
In object-oriented programming languages that support virtual methods, the compiler will automatically create a dispatch table for each object of a class containing virtual methods. This table is called a virtual method table or vtable, and every call to a virtual method is dispatched through the vtable.
[edit] References
- Diomidis Spinellis (2003). Code Reading: The Open Source Perspective. Boston, MA: Addison-Wesley. ISBN 0-201-79940-5