跳转至

13-Visitor Pattern

1,定义

官方的 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下==定义作用于这些元素的新操作。==
通俗的 针对不同对象做一些不同的操作,则可以使用访问者模式。
## 2,各类含义,UML
image1
我们将创建一个定义接受操作的 ComputerPart 接口。
Keyboard、Mouse、Monitor 和 Computer 是实现了 ComputerPart 接口的实体类。
我们将定义另一个接口 ComputerPartVisitor,它定义了访问者类的操作。Computer 使用实体访问者来执行相应的动作。

VisitorPatternDemo,我们的演示类使用 Computer、ComputerPartVisitor 类来演示访问者模式的用法。

3,代码

例子1 image2

image3

image4

image5

image6

例子2 image7

image8

image9

image10

image11

4,优缺点

优点: 1、符合单一职责原则。 2、优秀的扩展性。 3、灵活性。

缺点: 1、具体元素对访问者公布细节,违反了迪米特原则。 2、具体元素变更比较困难。 3、违反了依赖倒置原则,依赖了具体类,没有依赖抽象。

5,适用场景

XML文档解析器设计 编译器设计 复杂集合对象的处理

image12