访问者模式

1、访问者模式:表示一个作用域某对象结构中的各元素的操作。它使你可以在不改变个元素的类的前提下定义作用域这些元素的新操作。
2、优点:(1)、访问者模式适用于数据结构相对稳定的系统,它把数据结构和作用与结构上的操作之间的耦合解脱开,使得操作集合可以相对自有地演化。(2)、可以很容易地增加新的操作。因为增加新的操作就以为着增加一个显得访问者。访问者模式将有关的行为集中到一个访问者对象中。
3、使用场合:访问者模式的目的是要把处理从数据结构中分离出来。很多系统可以按照算法和数据结构分开,如果这样的系统有比较稳定的数据结构,又有易于变化的算法,使用访问者模式是比较适合的。因为访问者模式是的算法操作的增加变得容易。
4、组成:
(1)、Visitor 抽象访问者角色,为该对象结构中具体元素角色声明一个访问操作接口。该操作接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色,这样访问者就可以通过该元素角色的特定接口直接访问它。
(2)、ConcreteVisitor.具体访问者角色,实现Visitor声明的接口。
(3)、Element 定义一个接受访问操作(accept()),它以一个访问者(Visitor)作为参数。
(4)、ConcreteElement 具体元素,实现了抽象元素(Element)所定义的接受操作接口。
(5)、ObjectStructure 结构对象角色,这是使用访问者模式必备的角色。它具备以下特性:能枚举它的元素;可以提供一个高层接口以允许访问者访问它的元素;如有需要,可以设计成一个复合对象或者一个聚集(如一个列表或无序集合)。
5、注意:访问者模式能力比较强大,但是实现起来较为复杂。应该慎用!
原文地址:https://www.cnblogs.com/zxtp/p/4960514.html