分派表

分派表（dispatch table）是儲存函式（或方法）指標（或位址）的表格。若要在面向对象程序设计實現，分派表是常見的作法。

 Perl語言的實現 
以下程式說明一種在Perl語言中實現分派表的方式，用关联数组（hash）儲存對應程式的位置（也稱為函数指针）。

# 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";

用perl greet -h執行此程式會回應"hello"，若用perl greet -g執行此程式則會回應"goodbye"。

 JavaScript裡的實現 
以下是用JavaScript實現分派表：
const thingsWeCanDo = {
    doThisThing() { /* behavior */ },
    doThatThing() { /* behavior */ },
    doThisOtherThing() { /* behavior */ },
    default() { /* behavior */ }
};

function doSomething(doWhat) {
    const thingToDo = Object.hasOwn(thingsWeCanDo, doWhat) 
        ? doWhat 
        : "default";
    return thingsWeCanDo[thingToDo]();
}

 虛擬方法表 

在支援虛擬方法的面向对象编程语言中，編譯器會自動的為有虛擬方法的类的物件產生分派表。此表稱為虛擬方法表，簡稱vtable。每一次呼叫虛擬方法時，就會透過分派表分派到實際對應的方法。

 相關條目 
 跳躍表
 多分派

 參考資料 

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

Category:方法 (電腦科學)