`
shuofenglxy
  • 浏览: 194446 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

菜鸟硕枫设计模式系列之24 访问者模式

阅读更多
visit pattern是一种行为模式。主要特点是一个可遍历数据结构和比较稳固的对象,对于对象行为则可以方便添加,并且可以根据对象的类型表现不同的行为。

访问者模式类图:
                                 


具体实现demo:
对象接口
package visitorPattern;

public interface Person {
	void accept(Visitor visitor);
}


具体对象
package visitorPattern;

public class Man implements Person{

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

}


具体对象2
package visitorPattern;

public class Woman implements Person{

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

}


访问者接口:
package visitorPattern;

public interface Visitor {
	void visit(Man man);
	void visit(Woman woman);
}


package visitorPattern;

public class Shop implements Visitor{

	@Override
	public void visit(Man man) {
		System.out.println("Shopping is boring for " +man.getClass());
	}

	@Override
	public void visit(Woman woman) {
		// TODO Auto-generated method stub
		System.out.println("Shopping is funny for " +woman.getClass());
	}

}


package visitorPattern;

public class Work implements Visitor{

	@Override
	public void visit(Man man) {
		// TODO Auto-generated method stub
		System.out.println("Working is not so bad for " +man.getClass());
	}

	@Override
	public void visit(Woman woman) {
		// TODO Auto-generated method stub
		System.out.println("Working is quite a hard time for " +woman.getClass());
	}

}


测试类
package visitorPattern;

import java.util.ArrayList;

public class visitPatternTest {

	public static void main(String[]args){
		Man man = new Man();
		Woman woman = new Woman();
		ArrayList<Person> arrayList = new ArrayList<Person>();
		ObjectStructrue o1 = new ObjectStructrue(arrayList);
		o1.add(woman);
		o1.add(man);
		
		Work work = new Work();
		o1.show(work);
		System.out.println("------------------------------");
		Shop shop = new Shop();
		o1.show(shop);
	}
}


备注:优点在于很方便的添加访问者,而不用去改变对象的其他属性或是实现。
  • 大小: 19 KB
分享到:
评论

相关推荐

    Java设计模式菜鸟系列教程

    Java设计模式菜鸟系列教程 本教程对Java 23种设计模式进行了总结,涵盖了策略模式、观察者模式、装饰者模式、工厂方法模式、抽象工厂模式、单例模式、命令模式、适配器模式、外观模式、模板方法模式、迭代器模式、...

    设计模式学习经典篇之菜鸟篇

    本资源“设计模式学习经典篇之菜鸟篇”旨在为初学者提供一个全面而通俗易懂的设计模式学习路径。 设计模式的核心在于重用已验证的解决方案,以提高代码的可读性、可维护性和可扩展性。根据GOF(Gamma, Helm, ...

    23种设计模式知识要点.pdf_设计模式_

    设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题,提供了一套可重用的解决方案。这些模式都是经验丰富的软件开发者在长期实践中总结出来的,它们可以帮助我们写出更加灵活、可维护和可扩展...

    深入浅出设计模式(.PDF)

    行为型设计模式如观察者模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、状态模式、策略模式、模板方法模式和访问者模式,这些模式关注的是对象之间的交互和行为。 设计模式的核心价值在于它们是...

    C#23种设计模式【完整】(亲测可用)

    19. 访问者模式(Visitor Pattern):在不改变类结构的前提下,增加新的操作功能。 20. 迭代器模式(Iterator Pattern):提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 21. 中介者模式(Mediator ...

    23种软件设计模式简述

    19. **访问者模式**:表示一个作用于某对象结构中的各元素的操作。 20. **迭代器模式**:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 21. **模板方法模式**:定义一个操作中的算法...

    NET 设计模式

    代码可以运行,下载这个后,建议买-&gt;《大话设计模式这本书》。来辅助学习。有很多关于C#语言有关的设计模式分别由: ...19、访问者模式 20、策略模式 21、装饰模式 22、代理模式 23、工厂方法模式 24、原型模式

    Java之美[从菜鸟到高手演变]之设计模式

    总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式...

    菜鸟学设计模式(28天)[收集].pdf

    在IT软件开发领域,设计模式是解决常见问题的成熟方案,是经验的总结,能够帮助开发者写出更加灵活、可维护的代码。以下是对标题和描述中提到的设计模式及相关原则的详细解释: 1. **开放——封闭原则(OCP)**: ...

    c#代码介绍23种设计模式-01单例模式(附代码)

    c#代码介绍设计模式设计模式_单例模式 1)为什么会有单例模式 从单例模式的定义中我们可以看出——单例模式的使用自然是当我们的系统中某个对象只需要一个实例的情况,例如:操作系统中只能有一个任务管理器 2)...

    设计模式整理

    - 访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作,它允许在不改变各元素的类的前提下定义作用于这些元素的新操作。 MVC(模型-视图-控制器)是一种架构设计模式,广泛用于交互式应用程序。它将...

    菜鸟虚怀项目Java笔试题

    【描述】:“菜鸟虚怀项目Java笔试题”可能涵盖了从简单的语法问题到复杂的设计模式应用,全面地评估应聘者对于Java的理解程度和实际编程能力。这类笔试题通常包括选择题、填空题、简答题和编程题等形式,以全面覆盖...

    操作系统教程 Linux-菜鸟入门

    操作系统教程“Linux-菜鸟入门”是一份专门为初学者设计的学习资料,涵盖了操作系统的基本概念和Linux系统的核心特性。这个教程通过一系列深入浅出的章节,帮助新手理解操作系统如何管理和协调计算机资源,尤其是...

    吉林大学软件学院卓班设计模式第三次作业

    使用哪种设计模式较好?如何设计? 2) 在2D游戏的开发中,需要绘制地图,地图是由大量的“一样的图块”拼接而成,而“图块”的种类有限,目前有草地、海洋、沙漠、山地等,未来肯定要增加种类,但不会太多太频繁。...

    菜鸟学PHP之Smarty入门(组图)

    传统的开发模式下,开发者往往需要同时具备编程技能和视觉设计能力,这无疑增加了项目复杂度和工作负担。模板引擎的引入旨在实现**逻辑分离**,即**将业务逻辑与视图呈现相分离**。这一设计思想使得开发者可以专注于...

    资料库,关于面向对象以及4大特性,8大原则,24设计模式

    24种设计模式是解决软件开发中常见问题的通用解决方案,分为创建型、结构型和行为型三大类: 1. 创建型模式:单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)、...

    spring菜鸟入门经典实例

    DI是一种设计模式,它允许我们解耦组件,让它们之间通过接口而非具体的实现进行交互。Spring通过容器管理对象的生命周期和依赖关系,我们只需要配置好bean的定义,Spring就会自动装配这些bean,降低了代码的耦合度。...

    SQL Server 2000菜鸟进阶

    《SQL Server 2000菜鸟进阶》是专为初学者设计的一份全面而详细的教程,旨在帮助新手快速掌握SQL Server 2000这一经典数据库管理系统的基础知识和核心技能。SQL Server 2000是微软公司推出的一款企业级数据库系统,...

Global site tag (gtag.js) - Google Analytics