定义 封装作用于某数据结构(如List/Set/Map等)中的各元素的操作; 可以在不改变各元素的类的前提下,定义作用于这些元素的操作; 不同的Visitor对相同的数据产生不同的行为; 使用场景 一个数据结构(如List/Set/Map等)包含很多类型对象; 数据结构与数据操作分离; 优点 增加新的操作很容易,即增加一个新的访问者; 缺点 增加新的数据结构困难; 具体元素变更比较麻烦; 相关设计模式 访问者模式(主要针对数据结构中的元素某种特定的处理) & 迭代器模式(遍历);