定義
- 封裝作用于某數(shù)據(jù)結(jié)構(gòu)(如List/Set/Map等)中的各元素的操作;
- 可以在不改變各元素的類的前提下谢揪,定義作用于這些元素的操作;
- 不同的Visitor對(duì)相同的數(shù)據(jù)產(chǎn)生不同的行為;
使用場(chǎng)景
- 一個(gè)數(shù)據(jù)結(jié)構(gòu)(如List/Set/Map等)包含很多類型對(duì)象谢澈;
- 數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)操作分離;
優(yōu)點(diǎn)
- 增加新的操作很容易御板,即增加一個(gè)新的訪問(wèn)者锥忿;
缺點(diǎn)
- 增加新的數(shù)據(jù)結(jié)構(gòu)困難;
- 具體元素變更比較麻煩怠肋;
相關(guān)設(shè)計(jì)模式
- 訪問(wèn)者模式(主要針對(duì)數(shù)據(jù)結(jié)構(gòu)中的元素某種特定的處理) & 迭代器模式(遍歷)敬鬓;