浏览 4663 次
锁定老帖子 主题:学习笔记:访问者模式
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-01-18
public interface Visitable { public void accept(Visitor visitor); } 访问者接口 public interface Visitor { public void visitCollection(Collection collection); public void visit(StringElement stringE); public void visit(IntegerElement integerE); public void visit(ObjectAElement objectAE); } 被访问者实例 public class StringElement implements Visitable { private String value; public StringElement(String string){ value = string; } public String getValue(){ return value; } public void accept(Visitor visitor) { visitor.visit(this); } } public class ObjectAElement implements Visitable { private Object value; public ObjectAElement(Object objectA){ value = objectA; } public String getValue(){ return value.toString(); } public void accept(Visitor visitor) { visitor.visit(this); } } public class IntegerElement implements Visitable { private int value; public IntegerElement(int intergerE){ value = intergerE; } public int getValue(){ return value; } public void accept(Visitor visitor) { visitor.visit(this); } } 访问者实例 public class ConcreteVisitor implements Visitor { public void visit(StringElement stringE) { System.out.println("'"+stringE.getValue()+"'"); } public void visit(IntegerElement integerE) { Integer temp = integerE.getValue(); int tempI = temp.intValue() + 1; System.out.println(tempI); } public void visit(ObjectAElement objectAE) { System.out.println(objectAE.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); } } } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-01-18
http://www.iteye.com/post/193857
|
|
返回顶楼 | |
发表时间:2007-01-19
这种模式的访问者中的方法还是和被访问者耦合在一起了,通过反射解决是个不错的方法
|
|
返回顶楼 | |
发表时间:2007-01-20
多谢执教
|
|
返回顶楼 | |