java访问者模式

访问者模式:作用于某个对象群中各个对象的操作. 它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作.

这种设计模式一般是用在数据类型固定不变的情况下,其实我很想把访问者模式用在通用页面的数据访问中

package com.javapatterns.visitor.visitorsimplified; import java.util.Vector; import java.util.Enumeration; public class ObjectStructure { private Vector nodes; /** * @link aggregation */ private Node node; public ObjectStructure() { nodes = new Vector(); } public void action(Visitor visitor) { for(Enumeration e = nodes.elements(); e.hasMoreElements();) { node = (Node) e.nextElement(); node.accept(visitor); } } public void add(Node node) { nodes.addElement(node); } }

package com.javapatterns.visitor.visitorsimplified; abstract public class Node { public abstract void accept(Visitor visitor); /** @link dependency */ /*# Visitor lnkVisitorA; */ }

package com.javapatterns.visitor.visitorsimplified; public class NodeA extends Node { public void accept(Visitor visitor) { visitor.visit(this); } public String operationA() { return "NodeA is visited"; } }

package com.javapatterns.visitor.visitorsimplified; public class NodeB extends Node { public void accept(Visitor visitor) { visitor.visit(this); } public String operationB() { return "NodeB is visited"; } }

package com.javapatterns.visitor.visitorsimplified; public class Visitor { public void visit(NodeA nodeA) { System.out.println( nodeA.operationA() ); } public void visit(NodeB nodeB) { System.out.println( nodeB.operationB() ); } }

package com.javapatterns.visitor.visitorsimplified; public class Client { private static ObjectStructure aObjects; private static Visitor visitor; static public void main(String[] args) { aObjects = new ObjectStructure(); aObjects.add(new NodeA()); aObjects.add(new NodeB()); visitor = new Visitor(); aObjects.action(visitor); } }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值