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

主要原理:“反傳球”,Element來(lái)Visitor之間二輪調(diào)用,調(diào)用過(guò)程中用sinlge dispatch確定類型
posted on 2011-05-24 16:54 XXXXXX 閱讀(1635) 評(píng)論(1) 編輯 收藏 所屬分類: Programing