Files
Hui-s-notebook/203-Java/203.1-Java面试/205.19-网络&操作系统/访问者模式.md
2023-09-10 10:50:53 +08:00

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 结构对象

优点

  • 符合单一职责原则
  • 优秀的扩展性
  • 灵活性非常高

缺点

  • 具体元素对访问者公布细节
  • 具体元素变更比较困难
  • 违背了依赖倒置原则

使用场景

  • 一个对象接结构包含很多类对象,它们拥有不同的接口,而你想对这些对象实施一些依赖于具体类的操作,也就是说用迭代器已经不能胜任的情况
  • 需要对一个对象结构中的对象进行很多不同并且不相关的操作,而你想避免让这些操作"污染"这些对象的类

统计功能

多个访问者

双分派