VisitPattern

<p>visit pattern的目的是为了把对数据结构的处理从数据结构中抽象出来,比如书中的例子:</p>

<p>directory,file是一种数据结构,他们实现了accept接口,表面具有接受visit的能力。</p>

<p>visit则是具有处理数据能力的类的接口,接口必须要明白他所要处理的对象的详细信息。比如例子中visit必须要知道实现了entry接口的类有file和directory。</p>

<p>P178页,结城浩说在visit的visit方法中,必须要交替使用accept方法和visit方法来交替使用来实现递归,但是也可以使用下面的方法,只是用visit方法来避免递归。</p>
<p>使用下面的方法优点:只是用visit方法来实现递归,比较清晰。</p>
<p>缺点:1,增加的代码量。</p>
<p>2,或许还有别的缺陷,暂时没有想到。</p>

<p>package lv.multiThread.VisitorPattern;</p>
<p>import java.util.Iterator;</p>
<p>public class VisitorList extends Visitor {<br>private String currentdir = "";</p>
<p>public void visit(File file) {<br>System.out.println(currentdir + "/" + file);<br>}</p>
<p>public void visit(Directory directory) {<br>System.out.println(currentdir + "/" + directory);<br>String savedir = currentdir;<br>currentdir = currentdir + "/" + directory.getName();<br>Iterator<Entry> it = directory.iterator();<br>//while (it.hasNext()) {<br>//Entry entry = it.next();<br>//entry.accept(this);<br>//}<br>while (it.hasNext()) {<br>Entry entry=it.next();<br>if(entry instanceof File )<br>visit((File)entry);<br>if(entry instanceof Directory )<br>visit((Directory)entry);<br>}<br><br>currentdir = savedir;<br>}<br>}</p>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值