访问者模式的目的是封装一些施加于某种数据元素结构之上的操作。
访问者模式适用于数据结构相对固定的系统,它把数据结构和作用于数据结构上的操作之间的耦合解脱开,使得操作集合可以相对自由的演化。
数据结构的每一个节点,都可以接受一个访问者的调用,此节点向访问者对象传入节点对象,而访问者对象则反过来执行节点对象的操作。这样的过程叫做双重分派。节点调用访问者,将它自己传入,访问者则将某算法针对此节点来执行。
双重分派意味着施加于节点之上的操作是基于访问者和节点本身的数据类型,而不仅仅是其中的一者。...
分类:
其他好文 时间:
2014-10-28 15:34:20
阅读次数:
259
最近20天都在写这个...终于完工了(走向无尽的重构道路...)...感谢VC聚聚的博文和RE2作者的博客指导,感谢VC聚聚的源码参考.非常感谢!启发很大.vc聚聚的正则语法树遍历部分的方案.真是精妙!之前我虽然知道用Visitor模式遍历异构树,但是不知道怎么写vistor的框架满足需求.用的时候...
分类:
其他好文 时间:
2014-10-26 01:39:00
阅读次数:
273
interface Visitor {
void visit(Gladiolus g);
void visit(Chrysanthemum c);
}// concrete visitor 名称访问
class StringVisitor implements Visitor {
String s;
public String toString() {
return s;
}
...
分类:
编程语言 时间:
2014-10-14 15:48:28
阅读次数:
182
一. 访问者模式
定义:表示一个作用于某对象结构中的各元素的操作。它你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
结构如下:
二. 举例
假设有一项科学实验,是用来对比两种种子在不同环境下的生长情况。
两种种子,一种是普通的种子(Seed_A),一种是太空运回的种子(Seed_B)。
生长环境,分别是在多雨环境下(Rain_Statu...
分类:
编程语言 时间:
2014-07-06 10:58:04
阅读次数:
314
在阎宏博士的《JAVA与模式》一书中开头是这样描述访问者(Visitor)模式的: 访问者模式是对象的行为模式。访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。 1 interface Service { 2 3 ...
分类:
编程语言 时间:
2014-06-21 08:55:39
阅读次数:
300
一、访问者模式定义:
表示一个作用于某对象结构中各元素的操作。它可以使你不修改各元素类的前提下定义作用于这些元素的新操作,也就是动态的增加新的方法。
二、Visitor模式结构图:
三、Visitor模式中主要角色:
1)访问者角色(Visitor):为该对象结构(ObjectStructure)中的具体元素提供一个访问操作接口。该操作接口...
分类:
其他好文 时间:
2014-05-25 21:24:57
阅读次数:
352