Bảng điều phối

Trong khoa học máy tính, bảng điều phối (dispatch table) là một bản của con trỏ tới hàm hay phương thức. Đây là một kỹ thuật thông dụng để hiện thực liên kết trễ trong lập trình hướng đối tượng.

 Hiện thực trong Perl 
Bên dưới là một cách hiện thực bảng điều phối trong Perl, sử dụng một hash để chứa tham chiếu tới mã (còn gọi là con trỏ hàm).

 # Define the table using one anonymous code-ref and one named code-ref
 my %dispatch = (
   "-h" => sub {  return "hello\n"; },
   "-g" => \&say_goodbye
);

 sub say_goodbye {
   return "goodbye\n";
 }

 # Fetch the code ref from the table, and invoke it
 my $sub = $dispatch{$ARGV[0]};
 print $sub ? $sub->(): "unknown argument\n";

Chạy chương trình Perl này bằng lệnh perl greet -h sẽ xuất ra "hello", và chạy bằng lệnh perl greet -g sẽ xuất ra "goodbye".

 Hiện thực trong JavaScript 
Đây là cách hiện thực bảng điều phối trong JavaScript:
var thingsWeCanDo = {
    doThisThing: function() { /* behavior */ },
    doThatThing: function() { /* behavior */ },
    doThisOtherThing: function() { /* behavior */ },
    default: function() { /* behavior */ }
};

var doSomething = function(doWhat) {
    var thingToDo = thingsWeCanDo.hasOwnProperty(doWhat) ? doWhat: "default"
    thingsWeCanDo[thingToDo]();
}

 Bảng phương thức ảo 

Trong các ngôn ngữ lập trình hướng đối tượng có hỗ trợ phương thức ảo, trình biên dịch sẽ tự động tạo ra một bảng điều phối cho mỗi đối tượng của một lớp chứa các phương thức ảo. Bảng đó được gọi là bảng phương thức ảo (virtual method table hay vtable), và mỗi lời gọi hàm tới phương thức ảo được gửi qua vtable.

 Xem thêm 
 Branch table

 Tham khảo 

 Diomidis Spinellis (2003). Code Reading: The Open Source Perspective. Boston, MA: Addison-Wesley. 

Thể loại:Phương thức (lập trình máy tính)