*/
public interface Visitor {
/**
* 对应于NodeA的访问操作
*/
public void visit(NodeA node);
/**
* 对应于NodeB的访问操作
*/
public void visit(NodeB node);
}
package com.bankht.Visitor.visitor;
/**
* @author: 特种兵—AK47
* @创建时间:2012-7-3 上午10:50:06
*
* @类说明 :可以看到,抽象访问者角色为每一个具体节点都准备了一个访问操作。由于有两个节点,因此,对应就有两个访问操作。
*/
public interface Visitor {
/**
* 对应于NodeA的访问操作
*/
public void visit(NodeA node);
/**
* 对应于NodeB的访问操作
*/
public void visit(NodeB node);
}
具体访问者VisitorA类
[java]
package com.bankht.Visitor.visitor;
/**
* @author: 特种兵—AK47
* @创建时间:2012-7-3 上午10:58:04
*
* @类说明 :
*/
public class VisitorA implements Visitor {
/**
* 对应于NodeA的访问操作
*/
@Override
public void visit(NodeA node) {
System.out.println("VisitorA:" + node.operationA());
}
/**
* 对应于NodeB的访问操作
*/
@Override
public void visit(NodeB node) {
System.out.println("VisitorA:" + node.operationB());
}
}
package com.bankht.Visitor.visitor;
/**
* @author: 特种兵—AK47
* @创建时间:2012-7-3 上午10:58:04
*
* @类说明 :
*/
public class VisitorA implements Visitor {
/**
* 对应于NodeA的访问操作
*/
@Override
public void visit(NodeA node) {
System.out.println("VisitorA:" + node.operationA());
}
/**
* 对应于NodeB的访问操作
*/
@Override
public void visit(NodeB node) {
System.out.println("VisitorA:" + node.operationB());
}
}
具体访问者VisitorB类
[java]
package com.bankht.Visitor.visitor;
/**
* @author: 特种兵—AK47
* @创建时间:2012-7-3 上午10:58:21
*
* @类说明 :
*/
public class VisitorB implements Visitor {
/**
* 对应于NodeA的访问操作
*/
@Override
public void visit(NodeA node) {
System.out.println("VisitorB:" + node.operationA());
}
/**
* 对应于NodeB的访问操作
*/
@Override
public void visit(NodeB node) {
System.out.println("VisitorB:" + node.operationB());
}
}
package com.bankht.Visitor.visitor;
/**
* @author: 特种兵—AK47
* @创建时间:2012-7-3 上午10:58:21
*
* @类说明 :
*/
public class VisitorB implements Visitor {
/**
* 对应于NodeA的访问操作
*/
@Override
public void visit(NodeA node) {
System.out.println("VisitorB:" + node.operationA());
}
/**
* 对应于NodeB的访问操作
*/
@Override
public void visit(NodeB node) {
System.out.println("VisitorB:" + node.operationB());
}
}
抽象节点类
[java]
package com.bankht.Visitor.visitor;
/**
* @author: 特种兵—AK47
* @创建时间:2012-7-3 上午10:58:57
*
* @类说明 :
*/
public abstract class Node {
/**
* 接受操作
*/
public abstract void accept(Visitor visitor);
}
package com.bankht.Visitor.visitor;
/**
* @author: 特种兵—AK47
* @创建时间:2012-7-3 上午10:58:57
*
* @类说明 :
*/
public abstract class Node {
/**
* 接受操作
*/
public abstract void accept(Visitor visitor);
}
具体节点类NodeA
[java]
package com.bankht.Visitor.visitor;
/**
* @author: 特种兵—AK47
* @创建时间:2012-7-3 上午10:59:45
*
* @类说明 :
*/
public class NodeA extends Node {
/**
* 接受操作
*/
@Override
public void accept(Visitor visitor) {
visitor.visit(this);
}
/**
* NodeA特有的方法
*/
public String operationA() {
return "NodeA";
}
}
package com.bankht.Visitor.visitor;
/**
* @author: 特种兵—AK47
* @创建时间:2012-7-3 上午10:59:45
*
* @类说明 :
*/
public class NodeA extends Node {
/**
* 接受操作
*/
@Override
public void accept(Visitor visitor) {
visitor.visit(this);
}
/