`
dzgwt2004
  • 浏览: 167344 次
  • 来自: 浙江杭州
社区版块
存档分类
最新评论

学习笔记:访问者模式

阅读更多
被访问者接口
public interface Visitable {
	public void accept(Visitor visitor);
}


访问者接口
public interface Visitor {
	public void visitCollection(Collection collection);
	public void visit(StringElement stringE);
	public void visit(IntegerElement integerE);
	public void visit(ObjectAElement objectAE);
}


被访问者实例
public class StringElement implements Visitable {

	private String value;
	public StringElement(String string){
		value = string;
	}
	
	public String getValue(){
		return value;
	}
	
	public void accept(Visitor visitor) {
		visitor.visit(this);
	}

}

public class ObjectAElement implements Visitable {

	private Object value;
	
	public ObjectAElement(Object objectA){
		value = objectA;
	}
	
	public String getValue(){
		return value.toString();
	}
	
	public void accept(Visitor visitor) {
		visitor.visit(this);
	}

}

public class IntegerElement implements Visitable {
	
	private int value;
	
	public IntegerElement(int intergerE){
		value = intergerE;
	}
	
	public int getValue(){
		return value;
	}

	public void accept(Visitor visitor) {
		visitor.visit(this);

	}

}


访问者实例
public class ConcreteVisitor implements Visitor {

	public void visit(StringElement stringE) {
		System.out.println("'"+stringE.getValue()+"'");
	}

	public void visit(IntegerElement integerE) {
		Integer temp = integerE.getValue();
		int tempI = temp.intValue() + 1;
		System.out.println(tempI);
	}

	public void visit(ObjectAElement objectAE) {
		System.out.println(objectAE.getValue());

	}

	public void visitCollection(Collection collection) {
		Iterator iterator = collection.iterator();
		while(iterator.hasNext()){
			Object o = iterator.next();
			if(o instanceof Visitable){
				((Visitable)o).accept(this);
			}
		}
	}

}
  • 大小: 3.7 KB
分享到:
评论
3 楼 dzgwt2004 2007-01-20  
多谢执教
2 楼 gl2001wl 2007-01-19  
这种模式的访问者中的方法还是和被访问者耦合在一起了,通过反射解决是个不错的方法
1 楼 shaucle 2007-01-18  
http://www.iteye.com/post/193857

相关推荐

    23种设计模式学习笔记

    19. **访问者模式**:表示一个作用于某对象结构中的各元素的操作。它允许你将操作添加到一个对象结构中,而无需修改结构元素。 20. **备忘录模式**:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象...

    HeadFirst设计模式学习笔记

    4. **建造者模式**:将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。适用于构造过程较为复杂的对象。 5. **原型模式**:通过复制已有对象来创建新对象,减少类的实例化次数,提高性能。常...

    23种设计模式学习笔记及源码

    16. **访问者模式**:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变元素的类的前提下定义作用于这些元素的新操作。 17. **备忘录模式**:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该...

    linux运维学习笔记:MySQL运维基础面试问答题42题.pdf

    综上所述,这份学习笔记详细地覆盖了MySQL运维的各个方面,从基础概念、数据类型、数据库操作、安全加固、实例管理、日志管理等多个维度,为学习者提供了全面的参考资料。对于想要深入学习MySQL的运维人员来说,这份...

    300Java设计模式部分学习笔记

    6. 访问者模式(Visitor Pattern):表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 7. 策略模式(Strategy Pattern):定义一系列的算法,把它们一...

    linux运维学习笔记:数据库介绍与安装管理.pdf

    NoSQL是“非关系型数据库”的缩写,它提供了一种不同于传统关系型数据库的数据存储和访问模式。NoSQL数据库的出现是为了应对大数据时代对数据存储提出的新挑战,它们在高并发、高性能和灵活性方面表现出色。NoSQL并...

    设计模式学习笔记

    ### 设计模式学习笔记 #### 一、简单工厂模式 (Simple Factory) **类图与描述:** 简单工厂模式的核心在于存在一个工厂类,这个工厂类能够根据不同的输入参数返回不同的对象实例。简单工厂模式并不涉及继承关系,...

    《设计模式》学习笔记

    ### 设计模式学习笔记 #### 引言 设计模式(Design Patterns)是在软件设计领域内广泛应用的一种实践指南,它提供了一系列解决常见问题的方案。设计模式可以被理解为面向对象软件设计的经验总结,是对特定面向对象...

    设计模式笔记

    - 访问者模式:在不改变集合元素的情况下,增加新的操作功能。 这些设计模式的运用不仅限于某一特定语言,它们在Java、C#、Python等语言中都有广泛应用。通过学习和熟练掌握设计模式,开发者能够更好地理解和解决...

    C#设计模式学习笔记

    结构型模式处理对象组合,比如适配器模式(Adapter)用于接口转换,装饰者模式(Decorator)允许在运行时动态地给对象添加新的行为或职责,以及代理模式(Proxy)提供一个代表对象来控制对原对象的访问。行为型模式...

    java设计模式学习笔记,以及各种模式的代码实现

    16. **观察者模式**(订阅者模式):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 17. **命令模式**:将请求封装为一个对象,以便使用不同的请求、...

    java学习笔记及设计模式

    Java学习笔记及设计模式是程序员进阶过程中必不可少的资源,涵盖了广泛的Java基础知识和高级概念,同时结合了设计模式这一软件工程的重要组成部分。本资源集合旨在帮助开发者深化对Java语言的理解,提升编程技能,并...

    Eclipse开发学习笔记.pdf

    ### Eclipse开发学习笔记知识点解析 #### 一、Eclipse工作台(Workbench) Eclipse工作台是Eclipse提供的集成开发环境的核心部分,旨在为开发者创建一个无缝集成的工具集,以便于管理和导航工作空间资源。它是开发...

    尚硅谷设计模式源码笔记课件.zip

    行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式) 2) 学习目标:通过学习,学员...

    Java设计模式学习笔记.pdf

    3. 建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 4. 原型模式:通过复制现有的实例来创建新的实例,避免了重复的初始化操作。 5. 单例模式:确保一个类只有一个实例,...

    设计模式学习笔记及其模式特点总结

    这些文档涵盖了设计模式的基础知识,通过阅读和学习,你可以深入了解每种模式的原理、应用场景及其实现方式,从而提升你的软件设计能力。绘图1.vsd可能是用于描绘设计模式的UML类图或其他图表,它能直观地展示各对象...

    设计模式之美—学习笔记

    在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...

    大神写的MySQL DBA学习笔记

    这份“大神写的MySQL DBA学习笔记”无疑是深入理解和掌握MySQL技术的重要资源,尤其适合那些希望提升自己在数据库管理领域技能的人。笔记内容可能涵盖了从基础概念到高级实践的全方位知识,包括但不限于以下关键点:...

Global site tag (gtag.js) - Google Analytics