一、概念
靜態分派(Static Dispatch),發生在編譯時期,分派是根據靜態類型信息發生的,方法重載就是靜態分派。
動態分派(Dynamic Dispatch),發生在運行時期,動態分派動態地置換掉某個方法。面向對象的語言用動態分派實現多態性。
Java語言支持靜態多分派和動態的單分派,利用設計模式Java可以實現Double Dispatch,即訪問者模式。
二、Visitor Pattern
目的:封裝一些施加于某種數據結構元素之上的操作。
UML圖:

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