visitor parttern (third day)
来源:互联网 发布:java socket经常断开 编辑:程序博客网 时间:2024/06/08 00:28
visitor 抽象访问者
抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法的参数定义哪些对象可以被访问的。
concreteVisitor 具体访问者
它影响访问者访问到一个类后该怎么干,要做什么事情。
element 抽象元素
接口或者抽象类,声明接受那一类访问者访问,程序上市通过accept方法中的参数来定义的。
concreteElement 具体元素
实现accept 方法,通常是visitor。visit(this) 基本上都形成了一种模式了
objectStruture 结构对象
元素产生者,一般容纳在多个不同类,不同接口的容器
访问者 访问什么?
被访问者 接受 谁访问?
public class Client {private static ObjectStructure aObjects;private static Visitor visitor;public static void main(String[] args) {aObjects = new ObjectStructure();aObjects.add(new NodeA());aObjects.add(new NodeB());visitor = new VisitorA();aObjects.action(visitor);}}
public interface Visitor {//访问者 访问什么?void visit(NodeA node);void visit(NodeB node);}
public class VisitorA implements Visitor{@Overridepublic void visit(NodeA node) { System.out.println(node.operationA());}@Overridepublic void visit(NodeB node) { System.out.println(node.operateionB());}}
public class VisitorB implements Visitor{public void visit(NodeA nodeA){System.out.println(nodeA.operationA());}@Overridepublic void visit(NodeB node) {System.out.println(node.operateionB());}}
abstract public class Node {//接受谁 访问public abstract void accept(Visitor visitor);}
public class NodeA extends Node{ @Overridepublic void accept(Visitor visitor) {visitor.visit(this);}public String operationA(){return "NodeA is visited";}}
public class NodeB extends Node{@Overridepublic void accept(Visitor visitor) {visitor.visit(this);}public String operateionB(){return "Node B is visited";}}
import java.util.Enumeration;import java.util.Vector;/** 聚集:被访问者要接受那些访问者访问 * * @describe * @time 2014-7-2 上午11:47:11 */public class ObjectStructure {private Vector<Node> nodes;private Node node;public ObjectStructure(){nodes = new Vector();}public void action(Visitor visitor){for(Enumeration<Node> e = nodes.elements();e.hasMoreElements();){node = e.nextElement();node.accept(visitor);}}public void add(Node node){nodes.addElement(node);}}
0 0
- visitor parttern (third day)
- Culture Sharing(Third Day)
- The third day
- third day 自学测试
- The Third Day
- 9.19 third day 注意事项
- Python Third Day
- 设计模式 Design Parttern ——访问模式Visitor
- 《黑马程序员》The third day
- 数据结构习题学习笔记(The Third Day)
- php third day 数组相关 013.07.05
- The third day of learning java
- The third day in the new company called ehealth-china
- 通讯基本概念总结(中软国际Third Day)
- Fish to be a skilled programmer—third day
- Starting From 0 Learning Python(On the third day)
- URL Parttern
- Visitor
- Activity切换动画无效(android:windowIsTranslucent)影响(android:windowAnimationStyle)
- cocos2dx--cocos2dx3.1.1运行报无法解析的外部符号
- WPF使用Castle.ActiveRecord的简单示例
- java 深入剖析Java中的装箱和拆箱(Autoboxing/unboxing)
- C++类中具有静态数据成员
- visitor parttern (third day)
- 如何给Scrollview里内容截屏并生成bitmap,注意:Scrollview里面内容较多有滚动了·
- css相关
- 分布式事务两阶段提交详解
- JavaScript学习笔记(5)---继承2
- 研究Openstack Nova network
- Android软件安全开发实践
- IE6-IE8、ff兼容问题怎么写
- SDWebImage 原理解析