一、概念
靜態(tài)分派(Static Dispatch),發(fā)生在編譯時期,分派是根據(jù)靜態(tài)類型信息發(fā)生的,方法重載就是靜態(tài)分派。
動態(tài)分派(Dynamic Dispatch),發(fā)生在運(yùn)行時期,動態(tài)分派動態(tài)地置換掉某個方法。面向?qū)ο蟮恼Z言用動態(tài)分派實(shí)現(xiàn)多態(tài)性。
Java語言支持靜態(tài)多分派和動態(tài)的單分派,利用設(shè)計(jì)模式Java可以實(shí)現(xiàn)Double Dispatch,即訪問者模式。
二、Visitor Pattern
目的:封裝一些施加于某種數(shù)據(jù)結(jié)構(gòu)元素之上的操作。
UML圖:

主要原理:“反傳球”,Element來Visitor之間二輪調(diào)用,調(diào)用過程中用sinlge dispatch確定類型