Visitor
--- 为对象结构中ConcreteElement的每一个类声明一个Visit操作!该操作的名字和特征标识了发送Visit请求给该访问者的类。使得访问者可以确定正在被访问元素的具体的类。这样访问者就可以通过该元素的特定接口直接访问它。
ConcreteVisitor
--- 实现每个由Visitor声明的操作。每个操作实现本算法的一部分,该算法是对应于结构中对象的类。ConcreteVisitor为该算法提供了上下文并存储它的局部状态。这一状态常常在遍历该结构的过程中累计结果。
Element
--- 定义一个Accept操作,它以一个访问为参数
ConcreteElement
--- 实现Accept操作,该操作以一个访问者为参数