目录
1、访问者模式的定义
访问者模式是封装一些施加于某种数据结构之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保存不变。
访问者模式适用于数据结构相对稳定的系统, 它把数据结构和作用于数据结构之上的操作之间的耦合度降低,使得操作集合可以相对自由地改变。
数据结构的每一个节点都可以接受一个访问者的调用,此节点向访问者对象传入节点对象,而访问者对象则反过来执行节点对象的操作。
这样的过程叫做“双重分派”。节点调用访问者,将它自己传入,访问者则将某算法针对此节点执行
2、访问者模式的结构图
从上面描述可知,访问者模式是用来封装某种数据结构中的方法。
具体封装过程是:每个元素接受一个访问者的调用,每个元素的Accept方法接受访问者对象作为参数传入,访问者对象则反过来调用元素对象的操作
这里需要明确一点:访问者模式中具体访问者的数目和具体节点的数目没有任何关系。
3、从访问者的结构图可以看出,访问者模式涉及以下几类角色
1)抽象访问者角色(Vistor):声明一个活多个访问操作,使得所有具体访问者必须实现的接口。
2)具体访问者角色(ConcreteVistor):实现抽象访问者角色中所有声明的接口。
3)抽象节点角色(Element):声明一个接受操作,接受一个访问者对象作为参数。
4)具体节点角色(ConcreteElement):实现抽象元素所规定的接受操作。
5)结构对象角色(ObjectStructure):节点的容器,可以包含多个不同类或接口的容器。
4、访问者模式的实现
方法1:
先不用访问者模式的方式来实现某个场景。具体场景是——现