1.名词解释:
访问者模式:标识一个作用于某对象结构中的各元素的操作。它可使你在不改变各元素的前提下作用于这些元素的新操作。
2.代码示例:
访问者抽象类 package DesignPattern.VisitorPattern; public abstract class Visitor { public abstract void VisitConcreateElementA(ConcreateElementA concreateElementA); public abstract void VisitConcreateElementB(ConcreateElementB concreateElementB); }
实际访问者类A package DesignPattern.VisitorPattern; public class ConcreateVisitorA extends Visitor{ @Override public void VisitConcreateElementA(ConcreateElementA concreateElementA) { // TODO Auto-generated method stub System.out.println(concreateElementA.getName() + "失败时,闷头喝酒,谁也不用劝。"); } @Override public void VisitConcreateElementB(ConcreateElementB concreateElementB) { // TODO Auto-generated method stub System.out.println(concreateElementB.getName() + "失败时,眼泪汪汪,谁也劝不住。"); } }
实际访问者类B package DesignPattern.VisitorPattern; public class ConcreateVisitorB extends Visitor{ @Override public void VisitConcreateElementA(ConcreateElementA concreateElementA) { // TODO Auto-generated method stub System.out.println(concreateElementA.getName() + "成功时,背后多半有一个伟大的女人。"); } @Override public void VisitConcreateElementB(ConcreateElementB concreateElementB) { // TODO Auto-generated method stub System.out.println(concreateElementB.getName() + "成功时,背后大多有一个不成功的男人。"); } }
实际访问者类C package DesignPattern.VisitorPattern; public class ConcreateVisitorC extends Visitor{ @Override public void VisitConcreateElementA(ConcreateElementA concreateElementA) { // TODO Auto-generated method stub System.out.println(concreateElementA.getName() + "恋爱时,凡事不懂也要装懂。"); } @Override public void VisitConcreateElementB(ConcreateElementB concreateElementB) { // TODO Auto-generated method stub System.out.println(concreateElementB.getName() + "成功时,遇事懂也装作不懂。"); } }
抽象元素类 package DesignPattern.VisitorPattern; public abstract class Element { public abstract void Accept(Visitor visitor); }
实际元素类A package DesignPattern.VisitorPattern; public class ConcreateElementA extends Element{ private String name = ""; public ConcreateElementA(String name) { this.name = name; } @Override public void Accept(Visitor visitor) { // TODO Auto-generated method stub visitor.VisitConcreateElementA(this); } public String getName() { return this.name; } }
实际元素类B package DesignPattern.VisitorPattern; public class ConcreateElementB extends Element{ private String name = ""; public ConcreateElementB(String name) { this.name = name; } @Override public void Accept(Visitor visitor) { // TODO Auto-generated method stub visitor.VisitConcreateElementB(this); } public String getName() { return this.name; } }
主控程序 package DesignPattern.VisitorPattern; public class Client { public static void main(String[] args) { ObjectStructure objectStructure = new ObjectStructure(); objectStructure.add(new ConcreateElementA("男人")); objectStructure.add(new ConcreateElementB("女人")); ConcreateVisitorA v1 = new ConcreateVisitorA(); ConcreateVisitorB v2 = new ConcreateVisitorB(); ConcreateVisitorC v3 = new ConcreateVisitorC(); objectStructure.Accept(v1); objectStructure.Accept(v2); objectStructure.Accept(v3); } }
发表评论
-
吸血鬼数字
2011-11-07 23:31 606吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这 ... -
设计模式学习之观察者模式
2011-10-30 23:36 6041.名词解释 观察者模式定义了一种一对多的依赖关系,让多个观 ... -
设计模式学习之模板方法
2011-10-30 21:52 8351.名词解释 模板方法:定义一个操作中的算法的框架,而将一些 ... -
设计模式学习之工厂方法模式
2011-10-26 23:20 6791.名词解释 工厂方法模式,定义一个用于创建对象的接口,让子 ... -
设计模式学习之代理模式
2011-10-26 22:37 7441.名词解释 代理模式:为其他对象提供一种代理以控制对这个对 ... -
设计模式学习之装饰模式
2011-10-26 00:15 7671.名词解释: 装饰模式:动态的给一个对象添加一个额外的职 ... -
设计模式学习之策略模式
2011-10-24 23:59 8131.名词解释: 策略模式:它定义了算法家族,分别封装起来,让 ... -
设计模式学习之享元模式
2011-10-22 00:49 741享元模式:运用共享技术有效地支持大量细粒度的对象。主要用于避免 ... -
设计模式学习之中介者模式
2011-10-21 00:20 8001.名词解释: 中介者模式:用一个中介对象来封装一序列的对象 ... -
设计模式学习之职责链模式
2011-10-19 23:56 6911.名词解释: 职责链模式:使多个对象都有机会处理请求,从而 ... -
设计模式之命令模式
2011-10-18 23:37 7061.名词解释: 命令模式:将一个请求封装为一个对象,从而使你可 ... -
单例模式
2011-10-18 00:16 663单例模式:保证一个类仅有一个实例,并提供一个访问她的全局访问点 ...
相关推荐
访问者模式(Visitor)是一种行为设计模式,它允许在不修改对象结构的前提下向对象结构中的元素添加新的操作。这种模式将算法与数据结构分离,使得算法可以独立于数据结构进行变化,增强了系统的可扩展性。 在C++中...
访问者模式是一种软件设计模式,它在对象结构中定义了一个访问者的接口,使得该..."设计模式的访问者模式的例子"是理解并掌握这一模式的好材料,对于想要深入学习设计模式的IT从业者而言,这是一个不容忽视的学习资源。
在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...
### 设计模式学习报告 #### 一、设计模式概述 设计模式是一种被广泛接受和使用的编程解决方案,旨在解决软件设计中的常见问题。它不仅能够帮助开发者编写出更易于理解和维护的代码,还能够促进代码的复用性。设计...
3. 行为型模式:如策略模式、模板方法模式、观察者模式、命令模式、迭代器模式、责任链模式、备忘录模式、状态模式、解释器模式和访问者模式。这些模式主要处理对象之间的通信和行为,让代码更易于理解和扩展。 在...
这个“设计模式学习ppt”资料包显然是一份面向初学者或大学生的教学资源,通过十四个PPT文件深入浅出地讲解了设计模式的各个方面。 首先,我们来看设计模式的基本概念。设计模式是对在特定上下文中反复出现的问题...
本资料“java设计模式学习”包含了对设计模式的深入理解和实际应用,通过简单实用的例子,帮助开发者掌握如何在Java项目中运用设计模式。 首先,我们要介绍的是工厂模式。工厂模式是一种创建型设计模式,它提供了一...
如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、访问者模式(Visitor)、备忘录模式(Memento)、状态模式(State)、职责链...
本资源"设计模式学习.zip"聚焦于C++编程语言中的设计模式应用,是2017年的一次黑马程序员培训课程的配套代码,旨在帮助学习者通过实际的代码示例来理解和掌握设计模式。 在C++中,设计模式主要分为三大类:创建型...
### C#面向对象设计模式纵横谈(24):(行为型模式) Visitor 访问者模式 #### 概述 在本篇文章中,我们将深入探讨面向对象设计模式中的一个非常重要的模式——**Visitor(访问者)模式**。此模式属于行为型模式的一...
GOF(Gang of Four)设计模式,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位专家在他们的著作《设计模式:可复用面向对象软件的基础》中提出,被誉为设计模式的经典之作。本资源包含了GOF设计...
访问者模式表示一个作用于某对象结构中的各元素的操作,它可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 设计模式的学习不仅仅是记住每个模式的名称和定义,更重要的是理解其背后的意图和应用场景。...
本资源“设计模式学习经典篇之菜鸟篇”旨在为初学者提供一个全面而通俗易懂的设计模式学习路径。 设计模式的核心在于重用已验证的解决方案,以提高代码的可读性、可维护性和可扩展性。根据GOF(Gamma, Helm, ...
比如命令模式、解释器模式、迭代器模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。C#的事件和委托系统使得实现如观察者模式变得非常直观。 在C#设计模式(第二版)中,作者可能会...
总的来说,`C++设计模式代码资源24_Vistor_访问器.zip`提供了一个学习和实践C++访问者模式的实例,通过`Visitor1.cpp`和`Visitor2.cpp`的代码,我们可以深入理解如何在实际项目中运用这一模式,提高代码的灵活性和可...
压缩包中的"visitor"文件可能包含对该模式的详细代码示例、讲解文档或者案例分析,供学习者深入理解访问者模式的工作原理和实际应用。通过阅读这些材料,你可以更全面地掌握这一设计模式,以便在未来开发中灵活运用...