访问者模式(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.
(封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。)
《设计模式》一书对于访问者模式给出的定义为:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
组成:
- 访问者角色(Visitor):为该对象结构中具体元素角色声明一个访问操作接口。该操作接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色。这样访问者就可以通过该元素角色的特定接口直接访问它。
- 具体访问者角色(Concrete Visitor):实现每个由访问者角色(Visitor)声明的操作。
- 元素角色(Element):定义一个 Accept 操作,它以一个访问者为参数。
- 具体元素角色(Concrete Element):实现由元素角色提供的 Accept 操作。
- 对象结构角色(Object Structure):这是使用访问者模式必备的角色。它要具备以下特征: