访问者模式---行为型
使用场景:
(1)如果想对一个对象结构实施一些依赖于对象结构中具体类的操作,可以使用访问者模式。
(2)如果想对一个对象结构中的各个元素进行很多不同的而且不相关的操作,为了避免这些操作使类变得杂乱,可以使用访问者模式。把这些操作分散到不同的访问者对象中去,每个访问者对象实现同一类功能。
(3)如果对象结构很少变动,但是需要经常给对象结构中的元素对象定义新的操作可以使用访问者模式。
3 相关模式
(1)访问者模式和组合模式
这两个模式可以组合使用。如同前面示例的那样,通过访问者模式给组合对象预留下扩展功能的接口,使得为组合模式的对象结构添加功能非常容易。
(2)访问者模式和装饰模式
这两个模式从表面上看功能有些相似,都能够实现在不修改原对象结构的情况下修改原对象的功能。但是装饰模式更多的是实现对已有功能的加强、修改或者完全全新实现;而访问者模式更多的是实现为对象结构添加新的功能。
(3)访问者模式和解释器模式
这两个模式可以组合使用。解释器模式在构建抽象语法树的时候,是使用组合模式来构建的,也就是说解释器模式解释并执行的抽象语法树是一个组合对象结构,这个组合对象结构是很少对象结构的不同变动的,但是可能经常需要为解释器增加新的功能。解释和执行的功能,这正是访问者模式的优势所在,因此在使用释器模式的时候通常会组合访问者模式来使用。