多分派

理解分派

软件工程师通常把代码写进代码块中，代码块通常称作过程，函数，方法。代码通过被调用来执行，调用时将控制权传入函数中，当函数执行完成后将控制权返回给调用者。
函数名通常用来描述函数的目的。有时会将多个函数起同样的名称。比如同名函数在逻辑上处理相同的任务，但是操作在不同类型的输入值上。在这种情况下，无法单单通过函数名来判断目标代码块。那么，函数参数的个数和类型也就被用来判断。
通常，单分派面向对象语言，在调用一个方法时，方法参数中一个参数会被特殊对待并用来决定哪一个方法（如果有多个同名方法）会被调用。在许多语言中，这个特殊的参数是在语法上指明的，许多编程语言在调用方法时把特殊参数放在小圆点（.）之前。例如 special.method(other, arguments, here)，这样 lion.sound() 将会发出狮吼，同时 sparrow.sound() 只会吱吱地叫。
相反，在实现了多分派的语言中，被调用的函数即是那些参数个数一样多并且类型也匹配的调用。在调用中并没有特殊参数来决定那个方法被调用。
Common Lisp Object System (CLOS) 是早期和著名的多分派语言。

数据类型

对于编译时可以区分类型的编程语言，分派发生在编译时期，这通常被叫做方法重载。
在有些编程语言中，这种数据类型的区分可以被延后到运行时，例如后绑定（late binding）。分派发生在运行时并依据运行时方法的参数类型，这种方式的分派通常也被称为多方法（multimethods）。