设计模式之访问者模式
概述
这篇文章介绍了访问者模式(Visitor Pattern)的概念、优缺点、使用场景以及代码示例。
访问者模式的定义
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.
封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于用于这些元素的新的操作。
——《设计模式之禅》
访问者模式的目的是将数据结构和操作分离,用于数据结构固定,操作易变的场景,例如给不同的主管生成不同的报表。
UML 类图

- Visitor 抽象访问者,接口或抽象类,申明访问者可以访问哪些元素,通过
visit方法的参数来定义哪些对象可以访问。- ConcreateVisitor 具体访问者,定义了对每个元素访问时的具体操作
- Element 抽象元素,接口或抽象类,申明接受哪一类访问者,通过
accept方法参数来指定。- ConcreateElement 具体元素,实现
accept方法,通常都是visitor.visit(this)- ObjectStruture 结构对象,元素产生者,一般容纳在多个不同类、不同接口的容器,如 List、Set、Map 等。





