Таблица отгрузки - Dispatch table
В Информатика, а таблица отправки это таблица указатели к функциям или методы. Использование такой таблицы - распространенный прием при реализации позднее связывание в объектно-ориентированного программирования.
Реализация Perl
Ниже показан один из способов реализации таблицы отправки в Perl, используя хэш для хранения ссылок на код (также известный как указатели на функции ).
# Определить таблицу, используя одну анонимную ссылку кода и одну именованную ссылку кодамой %отправлять = ( "-час" => суб { возвращаться "привет п"; }, "-грамм" => \&say_goodbye); суб say_goodbye { возвращаться "до свидания п";} # Получить код ref из таблицы и вызвать егомой $ sub = $ отправка{$ ARGV[0]};Распечатать $ sub ? $ sub->() : "неизвестный аргумент n";
Запуск этой программы Perl как Perl приветствует -h
выдаст "привет" и запустит его как Perl приветствует -g
произведет «до свидания».
Реализация JavaScript
Ниже приведена демонстрация реализации таблицы диспетчеризации в JavaScript:
вар вещи = { doThisThing : функция() { /* поведение */ }, doThatThing : функция() { /* поведение */ }, doThisOtherThing : функция() { /* поведение */ }, дефолт : функция() { /* поведение */ }};вар сделай что-нибудь = функция(что делать) { вар вещь которую нужно сделать = вещи.hasOwnProperty(что делать) ? что делать : "дефолт" вещи[вещь которую нужно сделать]();}
Таблицы виртуальных методов
В объектно-ориентированный языки программирования эта поддержка виртуальные методы, то компилятор автоматически создаст таблицу диспетчеризации для каждого объекта учебный класс содержащие виртуальные методы. Эта таблица называется таблица виртуальных методов или же vtable, и каждый вызов виртуального метода отправляется через vtable.
Смотрите также
Рекомендации
- Диомидис Спинеллис (2003). Чтение кода: Перспектива открытого исходного кода. Бостон, Массачусетс: Аддисон-Уэсли. ISBN 0-201-79940-5