Visitor in Java
来源:互联网 发布:适合冥想的音乐 知乎 编辑:程序博客网 时间:2024/06/05 18:02
Visitor Code Sample
Visitor design pattern
1. Add an accept(Visitor) method to the “element” hierarchy
2. Create a “visitor” base class w/ a visit() method for every “element” type
3. Create a “visitor” derived class for each “operation” to do on “elements”
4. Client creates “visitor” objects and passes each to accept() calls
interface Element { void accept(Visitor v);}class FOO implements Element { public void accept(Visitor v) { v.visit(this); } public String getFOO() { return "FOO"; }}class BAR implements Element { public void accept( Visitor v ) { v.visit( this ); } public String getBAR() { return "BAR"; }}class BAZ implements Element { public void accept(Visitor v) { v.visit(this); } public String getBAZ() { return "BAZ"; }}interface Visitor { void visit(FOO foo); void visit(BAR bar); void visit(BAZ baz);}class UpVisitor implements Visitor { public void visit(FOO foo) { System.out.println("do Up on " + foo.getFOO()); } public void visit(BAR bar) { System.out.println("do Up on " + bar.getBAR()); } public void visit(BAZ baz) { System.out.println( "do Up on " + baz.getBAZ() ); }}class DownVisitor implements Visitor { public void visit(FOO foo) { System.out.println("do Down on " + foo.getFOO()); } public void visit(BAR bar) { System.out.println("do Down on " + bar.getBAR()); } public void visit(BAZ baz ) { System.out.println("do Down on " + baz.getBAZ()); }}public class VisitorDemo { public static void main( String[] args ) { Element[] list = {new FOO(), new BAR(), new BAZ()}; UpVisitor up = new UpVisitor(); DownVisitor down = new DownVisitor(); for (Element element : list) { element.accept(up); } for (Element element : list) { element.accept(down); } }}
Output
do Up on FOOdo Up on BARdo Up on BAZdo Down on FOOdo Down on BARdo Down on BAZ
阅读全文
0 0
- Visitor in Java
- 访问者(visitor) in Java
- Patterns in SOME - Visitor
- Visitor(访问者) java实现
- Java 访问者模式(Visitor)
- JAVA设计模式-Visitor
- Java Visitor 模式
- Visitor
- visitor
- Visitor
- Visitor
- Visitor
- Visitor
- Visitor
- Visitor
- double dispatch in Visitor design pattern
- Java设计模式之Visitor
- Java设计模式之Visitor
- 文本特征提取方法研究
- ie78里使用html5新标签
- 集体智慧编程_曼哈顿距离实现
- 运维 10/05 日志
- Java I/O
- Visitor in Java
- node-pre-gyp ERR! node-pre-gyp -xxxxxxxxxxxx
- word2vec 在 非 自然语言处理 (NLP) 领域的应用
- 使用Phoenix连接hbase数据库
- 任学堂:人工智能会写作、会玩游戏、会作曲,留给人类的工作还有什么?
- 最小生成树 普利姆算法代码C#实现
- Ubuntu 16.04 安装 IDEA
- Mybatis中的update动态SQL语句
- 友盟iOS推送为什么有时会出现生产环境下收不到的情况?