·被訪問者接口實(shí)現(xiàn)類
使用訪問者模式前提是對(duì)象群結(jié)構(gòu)中(Collection) 中的對(duì)象類型很少改變。
在兩個(gè)接口Visitor和Visitable中,確保Visitable很少變化,也就是說,確保不能老有新的Element元素類型加進(jìn)來,可以變化的是訪問者行為或操作,也就是Visitor的不同子類可以有多種,這樣使用訪問者模式最方便.
如果對(duì)象集合中的對(duì)象集合經(jīng)常有變化, 那么不但Visitor實(shí)現(xiàn)要變化,Visistable也要增加相應(yīng)行為,GOF建議是,不如在這些對(duì)象類中直接逐個(gè)定義操作,無需使用訪問者設(shè)計(jì)模式。
--摘自www.jdon.com的《Visitor模式》 一節(jié) 原因: 如果Visitable中元素的類型是固定的或者很少變化的,那么即使Visitor中相應(yīng)的訪問行為發(fā)生改變了,對(duì)Visitable也沒有影響。相反如果Visitable中元素的類型變化頻繁,除了Visitable要增加新的類型,Visitor也要增加相應(yīng)的visitXxx方法。所以說使用Visitor模式的一個(gè)前提是被訪問者的類型很少改變