定义:
访问者模式(visitor)
表示一个作用于某对象结构中的各元素的操作。 它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
PS: 结构和算法的分离,算法多个拜年话,结构基本上稳定。
eg:
1》男人和女人的问题
2》管道工来修东西的过程
3》 绘制项目里面的绘制方法
构成的主要角色:访问者、它访问的元素。
元素:可以是任何对象,当时通常是“部分-整体”结构中的节点。
使用场景:
1》一个复杂的对象结构包含很多其他对象,它们有不同的接口(eg: 组合体),但是想对这些对象实施一些依赖于其具体类型的操作
2》需要对一个组合结构中的对象进行很多不相关的操作,但是不想让这些操作“污染”这些对象的类。 可以将相关的操作集中起来,定义在一个访问者类中,并在需要在访问者中定义的操作时使用它。
3》定义复杂结构的类很少作修改,但经常需要向其添加新的操作。
也就是: 基本上element的类型不会修改太多,但是操作是不断变化的。
访问者模式适用于数据结构相对问题的系统, 它吧数据结构和作用域结构的操作之间的耦合解脱开,使得操作集合可以看相对自由地演化。
访问者模式的目的是要把处理从数据结构分类出来,如果系统有比较稳定的数据结构,又有易于变化的算法的话,使用访问者模式是比较合适的,因为访问者模式使得算法操作的增加变得容易。
访问者的优点是:增加新的额操作很容易,因为增加新的操作意味着增加一个新的访问者。访问者模式将有关的行为集中到一个访问对象中。
缺点: 使增加新的数据结构变得困难。
网友评论