论坛首页 Java企业应用论坛

再谈Iterator vs Visitor

浏览 1761 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-09-11  

Iterator和Vistor的描述见http://www.iteye.com/topic/21293

啥时候用Iterator?啥时候用Vistor?从我的角度看来Vistor是为了解决Iterator的问题而出现的。Iterator有啥问题呢?设想这么一套类体系:类很多,几百个,类继承层次和关系也很多,这个时候,用Iterator,如下:

    while ( (node = iter.next()) != null){

.....

node.method1();

.....

    }

OK,处理方法是写在各个node里的,接下来,我想要为这套类体系加一个方法method2(),完了,严重的问题出现了,几百个类发生变动。如果我不把方法method2()写在node里呢?你的Iterator的处理方法会有一大堆的if/else来根据node的不同来做相应的处理,这个肯定同样也是不可取的。怎么办?Visitor出现了,它怎么解决这个问题?呵呵,它只不过帮你把方法挪个位置,当你需要在类体系中加一个method2()方法时,你实际上需要把所有的method2()方法搬到一个新建的Visitor中。

总结:当需要修改类体系增加遍历所需方法时,就增加一个Visitor,Visitor是为了维护类体系的稳定性而产生的模式,也这是它比Iterator优越的地方。

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics