Bảng điều phối

Bách khoa toàn thư mở Wikipedia

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[sửa | sửa mã nguồn]

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[sửa | sửa mã nguồn]

Đâ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[sửa | sửa mã nguồn]

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[sửa | sửa mã nguồn]

Tham khảo[sửa | sửa mã nguồn]