1.1 KiB
1.1 KiB
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 访问者角色
- ConcreteVisitor 具体访问者
- Element 抽象元素
- ConcreteElement 具体抽象元素
- ObjectStruct 结构对象
优点
- 符合单一职责原则
- 优秀的扩展性
- 灵活性非常高
缺点
- 具体元素对访问者公布细节
- 具体元素变更比较困难
- 违背了依赖倒置原则
使用场景
- 一个对象接结构包含很多类对象,它们拥有不同的接口,而你想对这些对象实施一些依赖于具体类的操作,也就是说用迭代器已经不能胜任的情况
- 需要对一个对象结构中的对象进行很多不同并且不相关的操作,而你想避免让这些操作"污染"这些对象的类
统计功能
多个访问者
双分派