`

设计模式之访问者模式

    博客分类:
  • Java
 
阅读更多
main
===================================================================================
package com.visitor.sym;

public class TestVisitor {

	/**
	 * @param args
	 * 抽象访问者:抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法中的参数定义哪些对象是可以被访问的。
	 * 访问者:实现抽象访问者所声明的方法,它影响到访问者访问到一个类后该干什么,要做什么事情。
	 * 抽象元素类:接口或者抽象类,声明接受哪一类访问者访问,程序上是通过accept方法中的参数来定义的。抽象元素一般有两类方法,一部分是本身的业务逻辑,另外就是允许接收哪类访问者来访问。
	 * 元素类:实现抽象元素类所声明的accept方法,通常都是visitor.visit(this),基本上已经形成一种定式了。
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		VisitorI visitor = new Visitor();
		ConcreteElement1 concreteElement1 = new ConcreteElement1();
		concreteElement1.accept(visitor);
		ConcreteElement2 concreteElement2 = new ConcreteElement2();
		concreteElement2.accept(visitor);
	}

}
访问者接口
================================================================================
package com.visitor.sym;

public interface VisitorI {
	void visit(ConcreteElement1 concreteElement1);

	void visit(ConcreteElement2 concreteElement2);
}
具体访问者
================================================================================
package com.visitor.sym;

public class Visitor implements VisitorI {

	@Override
	public void visit(ConcreteElement1 concreteElement1) {
		// TODO Auto-generated method stub
		concreteElement1.doSomething();
	}

	@Override
	public void visit(ConcreteElement2 concreteElement2) {
		// TODO Auto-generated method stub
		concreteElement2.doSomething();
	}

}
元素接口
=================================================================================
package com.visitor.sym;

public interface Element {
	void accept(VisitorI visitor);

	void doSomething();
}
元素一:
=================================================================================
package com.visitor.sym;

public class ConcreteElement1 implements Element {

	@Override
	public void accept(VisitorI visitor) {
		// TODO Auto-generated method stub
		visitor.visit(this);
	}

	@Override
	public void doSomething() {
		// TODO Auto-generated method stub
		System.out.println("这是第一个元素");
	}

}
元素二:
================================================================================
package com.visitor.sym;

public class ConcreteElement2 implements Element {

	@Override
	public void accept(VisitorI visitor) {
		// TODO Auto-generated method stub
		visitor.visit(this);
	}

	@Override
	public void doSomething() {
		// TODO Auto-generated method stub
		System.out.println("这是第二个元素");
	}

}
/*打印结果:这是第一个元素
这是第二个元素*/
  • 大小: 18 KB
分享到:
评论

相关推荐

    设计模式之访问者模式(Visitor Pattern)

    **访问者模式(Visitor Pattern)**是一种行为设计模式,它提供了一种在不修改对象结构的情况下增加新操作的方法。这种模式的主要思想是将数据结构与算法分离,使得算法可以在不改变对象结构的情况下独立变化。 在...

    java设计模式之访问者模式

    访问者模式是一种软件设计模式,它允许在不改变对象结构的情况下,在对象的现有结构上增加新的操作。在Java中,这种模式尤其有用,因为它能够帮助我们保持类的封装性,同时提供了一种灵活的方式来扩展对象的功能。...

    设计模式之访问者模式(Visitor)

    访问者模式是一种行为设计模式,它使你可以在不修改对象结构的情况下,为对象添加新的操作。这种模式的核心在于将数据结构与对这些数据的操作解耦,使得增加新的操作变得容易,同时也允许独立地改变元素类和访问者类...

    设计模式之访问者模式Java版本实现

    **访问者模式**是软件设计模式中的一种结构型模式,它允许在不修改对象结构的情况下,在对象上增加新的操作。这种模式将数据结构与数据操作分离,使得代码更易于维护和扩展。 在Java中实现访问者模式,通常包括以下...

    java 设计模式之访问者模式.rar

    **访问者模式**是软件设计模式中的一种结构型模式,它在对象结构中引入了一个访问者角色,使得访问者可以对结构中的元素进行操作,同时又保持了元素本身与操作的解耦。这一模式在Java编程中有着广泛的应用,尤其在...

    Android编程设计模式之访问者模式详解

    访问者模式是一种面向对象的设计模式,其主要目的是将数据结构与对数据的操作分离开来。在Android编程中,访问者模式能够帮助开发者在不修改原有对象结构的基础上,添加新的操作,从而增强系统的灵活性和可扩展性。 ...

    设计模式之访问者模式Vistor

    **访问者模式(Visitor Pattern)**是一种行为设计模式,它允许在不修改对象结构的情况下增加对象的新功能。在软件工程中,当系统需求发生变化,需要为现有的类层次结构添加新的操作时,访问者模式能提供一个优雅的...

    23钟设计模式之访问者模式

    【访问者模式】是一种行为设计模式,它允许在不修改对象结构的情况下,为对象增加新的操作功能。在访问者模式中,一个特定的访问者对象会遍历一个对象结构(通常是一个元素的集合),并执行特定的操作。这种模式主要...

    Java 23种设计模式27访问者模式.pdf

    ### Java设计模式之访问者模式详解 #### 模式动机 访问者模式主要应用于处理一组对象,这组对象通常被存储在一个聚合结构(如列表、树等)中,并且这组对象具有不同的类型。访问者模式的核心思想在于,可以通过向...

    JAVA设计模式之访问者模式原理与用法详解

    JAVA设计模式之访问者模式原理与用法详解 访问者模式是JAVA设计模式中的一种重要模式,主要用于描述访问对象结构中各元素的操作,使得在不改变各元素类数据结构的前提下可以增加作用于这些元素的新操作。访问者模式...

    JS设计模式之访问者模式定义与用法分析

    本文实例讲述了JS设计模式之访问者模式定义与用法。分享给大家供大家参考,具体如下: 在访问者模式中,主要包括下面几个角色 1、抽象访问者:抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit...

    设计模式C++学习之访问者模式(Visitor)

    访问者模式(Visitor)是一种行为设计模式,它允许在不修改对象结构的前提下向对象结构中的元素添加新的操作。这种模式将算法与数据结构分离,使得算法可以独立于数据结构进行变化,增强了系统的可扩展性。 在C++中...

    轻松掌握python设计模式之访问者模式

    ### Python设计模式之访问者模式详解 在软件开发过程中,设计模式作为一种被广泛接受的解决方案,可以帮助开发者解决常见的编程问题。其中,“访问者模式”(Visitor Pattern)是一种行为型设计模式,它允许向一组...

    C++设计模式之访问者模式

    主要介绍了C++设计模式之访问者模式,本文讲解了什么是访问者模式、访问者模式的UML类图、访问者模式的实现代码等内容,需要的朋友可以参考下

    设计模式的访问者模式的例子

    访问者模式是一种软件设计模式,它在对象结构中定义了一个访问者的接口,使得该访问者可以访问该结构中的每一个元素,同时不影响对象结构本身。这种模式的主要目的是将数据操作与数据结构分离,使得数据结构的变化...

    设计模式 访问者模式

    **访问者模式**是一种行为设计模式,它允许在不修改对象结构的情况下添加新的操作。这种模式主要用于处理具有复杂对象结构的情况,使得我们可以对结构中的每个元素执行特定操作,而无需暴露其内部实现。 访问者模式...

    java设计模式-访问者模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...

Global site tag (gtag.js) - Google Analytics