[code]
package designpattern;
public interface Visitable
{
public void accept(Visitor visitor);
}
package designpattern;
public class StringElement implements Visitable
{
private String value;
public StringElement(String string)
{
value = string;
}
public String getValue()
{
return value;
}
//定义accept的具体内容 这里是很简单的一句调用
public void accept(Visitor visitor)
{
visitor.visitString(this);
}
}
package designpattern;
public class FloatElement implements Visitable
{
public FloatElement(float f)
{
}
private Float value;
public FloatElement(Float value)
{
this.value = value;
}
public Float getValue()
{
return value;
}
//定义accept的具体内容 这里是很简单的一句调用
public void accept(Visitor visitor)
{
visitor.visitFloat(this);
}
}
package designpattern;
import java.util.*;
public interface Visitor
{
public void visitString(StringElement stringE);
public void visitFloat(FloatElement floatE);
public void visitCollection(Collection collection);
}
package designpattern;
import java.util.*;
public class ConcreteVisitor implements Visitor
{
public static void main(String[] args)
{
List list = new ArrayList();
list.add(new StringElement("xuxiaolei"));
list.add(new FloatElement(100f));
ConcreteVisitor vistor = new ConcreteVisitor();
vistor.visitCollection(list);
}
public void visitString(StringElement stringE)
{
System.out.println(stringE.getValue());
}
public void visitFloat(FloatElement floatE)
{
System.out.println(floatE.getValue());
}
public void visitCollection(Collection collection)
{
Iterator iterator = collection.iterator();
while (iterator.hasNext())
{
Object o = iterator.next();
if (o instanceof Visitable)
{
((Visitable)o).accept(this);
}
}
}
}
[/code]
package designpattern;
public interface Visitable
{
public void accept(Visitor visitor);
}
package designpattern;
public class StringElement implements Visitable
{
private String value;
public StringElement(String string)
{
value = string;
}
public String getValue()
{
return value;
}
//定义accept的具体内容 这里是很简单的一句调用
public void accept(Visitor visitor)
{
visitor.visitString(this);
}
}
package designpattern;
public class FloatElement implements Visitable
{
public FloatElement(float f)
{
}
private Float value;
public FloatElement(Float value)
{
this.value = value;
}
public Float getValue()
{
return value;
}
//定义accept的具体内容 这里是很简单的一句调用
public void accept(Visitor visitor)
{
visitor.visitFloat(this);
}
}
package designpattern;
import java.util.*;
public interface Visitor
{
public void visitString(StringElement stringE);
public void visitFloat(FloatElement floatE);
public void visitCollection(Collection collection);
}
package designpattern;
import java.util.*;
public class ConcreteVisitor implements Visitor
{
public static void main(String[] args)
{
List list = new ArrayList();
list.add(new StringElement("xuxiaolei"));
list.add(new FloatElement(100f));
ConcreteVisitor vistor = new ConcreteVisitor();
vistor.visitCollection(list);
}
public void visitString(StringElement stringE)
{
System.out.println(stringE.getValue());
}
public void visitFloat(FloatElement floatE)
{
System.out.println(floatE.getValue());
}
public void visitCollection(Collection collection)
{
Iterator iterator = collection.iterator();
while (iterator.hasNext())
{
Object o = iterator.next();
if (o instanceof Visitable)
{
((Visitable)o).accept(this);
}
}
}
}
[/code]