Java筹划情势之Visitor情势[Java编程]
本文“Java筹划情势之Visitor情势[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Visitor定义
作用于某个对象群中各个对象的操作.它可以使你在不改变这些对象本身的情形下,定义作用于这些对象的新操作.
在Java中,Visitor情势实际上是别离了collection构造中的元素和对这些元素举行操作的行为.
为什么利用Visitor?
Java的Collection(包含Vector和Hashtable)是我们最常常利用的技术,但是Collection好象是个黑色大染缸,本来有各种鲜明范例特点的对象一旦放入后,再取出时,这些范例就消逝了.那么我们势必要用If来判断,如:
Iterator iterator = collection.iterator()
while (iterator.hasNext()) {
Object o = iterator.next();
if (o instanceof Collection)
messyPrintCollection((Collection)o);
else if (o instanceof String)
System.out.println("'"+o.toString()+"'");
else if (o instanceof Float)
System.out.println(o.toString()+"f");
else
System.out.println(o.toString());
}
在上例中,我们利用了 instanceof来判断 o的范例.
很明显,这样做的缺陷代码If else if 很烦琐.我们便可以利用Visitor情势办理它.
若何利用Visitor?/
针对上例,我们计划一个接口visitor拜候者:
public interface Visitor
{
public void visitCollection(Collection collection);
public void visitString(String string);
public void visitFloat(Float float);
}
在这个接口中,将我们认为Collection有大概的类的范例放入此中.
有了拜候者,我们需求被拜候者,被拜候者就是我们Collection的每个元素Element,我们要为这些Element定义一个可以承受拜候的接口(拜候和被拜候是互动的,只有拜候者,被拜候者假如表示不欢送,拜候者就不能拜候).
我们定义这个接口叫Visitable,用来定义一个Accept操作,也就是说让Collection每个元素具有可拜候性.
public interface Visitable
{
public void accept(Visitor visitor);
}
好了,有了两个接口,我们就要定义他们的具体实现(Concrete class):
public class ConcreteElement implements Visitable
{
private String value;
public ConcreteElement(String string) {
value = string;
}
//定义accept的具体内容 这里是很简单的一句调用
public void accept(Visitor visitor) {
visitor.visitString(this);
}
}
以上是“Java筹划情势之Visitor情势[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |