Java Vistor 设计模式
来源:互联网 发布:脊柱梳理床 知乎 编辑:程序博客网 时间:2024/05/21 19:23
Visitor pattern 经常被 compiler 的 parser 使用,比如 Eclipse JDT AST Parser.
它基本包含两个重要的接口, Visitor 和 Element
Visitor 模式举例
设想一个旅游者首次访问 New York, 而New York也接受它的访问。一旦访问开始,将自动访问New York的景点,他不需要调用访问 museum 的函数,此方式是整个一套打包。
Visitor 模式类图
Visitor 模式的步骤
工作流程如下:
1. visitor FirstTimeVisitor 和元素 City 被建立
2. 程序以 “City accept a visitor”.为开始
3. City 定义的accept 方法接受 visitor 去访问.
4. 被接受的 visitor 用他定义的重载(overloaded)方法“visit” 来访问 City.
import java.util.ArrayList; interface Visitor {public void visit(City city);public void visit(Museum museum);public void visit(Park park);} class FirstTimeVisitor implements Visitor { @Overridepublic void visit(City city) {System.out.println("I'm visiting the city!");} @Overridepublic void visit(Museum museum) {System.out.println("I'm visiting the Museum!");} @Overridepublic void visit(Park park) {System.out.println("I'm visiting the Park!");}} interface Element {public void accept(Visitor visitor);} class City implements Element { ArrayList<Element> places = new ArrayList<Element>(); public City() {places.add(new Museum());places.add(new Park());} @Overridepublic void accept(Visitor visitor) {System.out.println("City is accepting visitor.");visitor.visit(this); for (Element e : places) {e.accept(visitor);}}} class Museum implements Element {@Overridepublic void accept(Visitor visitor) {System.out.println("Museum is accepting visitor.");visitor.visit(this);}} class Park implements Element {@Overridepublic void accept(Visitor visitor) {System.out.println("Park is accepting visitor.");visitor.visit(this);} } public class TestVisitor {public static void main(String[] args) {FirstTimeVisitor visitor = new FirstTimeVisitor();City city = new City();city.accept(visitor);}}
City is accepting visitor.
I’m visiting the city!
Museum is accepting visitor.
I’m visiting the Museum!
Park is accepting visitor.
I’m visiting the Park!
JDK中的 Visitor 模式
javax.lang.model.element.AnnotationValue 明显使用了 Visitor pattern, 但它很少被正规项目使用
本文出处:http://www.programcreek.com/2011/05/visitor-design-pattern-example/ 写得很好,故翻译之 0 0
- Java Vistor 设计模式
- Java设计模式-访问者模式-Vistor
- Vistor设计模式
- 设计模式:访问者模式-vistor
- 设计模式之访问者模式(Vistor)
- [设计模式-行为型]访问者模式(Vistor)
- 设计模式:访问者模式(Vistor)
- 设计模式:访问者模式(Vistor)
- vistor模式
- 设计模式(3)-访问者模式 Vistor Pattern
- C#设计模式之访问者模式(Vistor Pattern)
- 设计模式拾荒之访问者模式(Vistor Pattern)
- Vistor设计模式续:合并操作,分离思考
- 【设计模式学习笔记二十三】【行为模式】【访问者模式(Vistor)】
- 深入浅出设计模式(十一):16.中介者模式(Mediator) 17.访问者模式(Vistor)
- 读书笔记_java设计模式深入研究 第九章 访问者模式 Vistor
- 23种设计模式(23)_行为型_访问者模式(Vistor Pattern)
- 访问者模式(Vistor Pattern)
- java 获得pdf 目录的方法
- Android JNI 实例
- 博弈与动态规划
- Java Collections Framework之Collections源码分析(基于JDK1.6)
- (10)Hive体系结构 —— 深入浅出学Hive
- Java Vistor 设计模式
- 终端服务器超出了最大允许连接数
- 两种老公,两种人生
- 冒泡事件
- C#获取汉字首字母
- Uva 10413 Crazy Savages
- Eclipse调试常用技巧
- (11)Hive的原理—— 深入浅出学Hive
- 掌握actionscript 3.0宝典的重点内容就是这么简单