Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates.
封装一些作用于某些数据结构中各元素的操作,它可以在不修改数据结构的前提下定义作用于这些元素的新的操作。
Visitor抽象访问者
抽象类或接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法的参数定义哪些对象是可以被访问的。
ConcreteVistor具体访问者
它影响访问者访问到一个类后该怎么干,要做什么事情。
Element抽象元素
接口或者抽象类,声明接受哪一类访问者访问,程序上是通过accept方法中的参数来定义的。
ConcreteElement具体元素
实现accept方法,通常visitor.visit(this)
,基本上都形成了一种模式了。
ObjectStruture结构对象
元素产生者,一般容纳在多个不同类、不同接口的容器,如List、Set、Map等。