JAVA设计模式笔记(访问者模式)

访问者模式,是行为型设计模式之一。访问者模式封装一些作用于某种数据结构各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素新的操作。访问者模式主要将数据操作和数据结构分离,解决数据结构和操作耦合性的问题。
访问者模式的基本工作原理是:在被访问的类里面加一个对外提供接待访问者的接口。

类图:
JAVA设计模式笔记(访问者模式)
(1)Visitor:接口或者抽象类,它定义了对每一个元素(Element)访问的行为,它的参数就是可以访问的元素,它的方法数理论上来讲与元素个数是一样的,因此,访问者模式要求元素的类族要稳定,如果经常添加、移除元素类,必然会导致频繁地修改Visitor接口,如果这样则不适合使用访问者模式。
(2)ConcreteVisitor:具体访问者,它需要给出对每一个元素类访问时所产生的具体行为。
(3)Element:元素接口或者抽象类,它定义了一个接受访问者的方法(Accept),其意义是指每一个元素都要可以被访问者访问。
(4)ConcreteElement:具体的元素类,它提供接受访问方法的具体实现,而这个具体的实现,通常情况下是使用访问者提供的访问该元素类的方法。
(5)ObjectStructure:对象结构是一个抽象表述,它内部管理了元素集合,并且可以迭代这些元素供访问者访问。