GOF定义:表示一个作用于某对象结构中的各元素的操作用,它是你可以在不改变各元素的前提下定义作用于这些元素的新操作。
访问者模式是21中设计模式中最难理解的一个设计模式。
角色分析:
抽象访问者:
抽象类或者接口,声明访问者可以访问哪些元素,具体的程序中就是visit方法中的参数定义。
访问者:
实现抽象访问者所声明的方法,及访问元素的后做的操作。
抽象元素类:
接口或者抽象类,声明接受哪一类访问者访问,程序中定义accept方法的参数定义。
元素类:实现抽象元素类所声明的accept方法,及一般的class.。基本实现:visitor.visit(this);
具体例子实现:
/** * 抽象访问者角色 * @author wdt * */ interface IVisitor { public void visit(Element1 el1); public void visit(ConcreteElement2 el2); } /** * * @author wdt * 具体访问者角色 * 实现抽象访问者的方法 */ class Visitor implements IVisitor { /** * el1为被访问的对象 */ public void visit(ConcreteElement1 el1) { ---这里还可以做点什么? el1.doSomething(); } public void visit(ConcreteElement2 el2) { el2.doSomething(); } }
/** * 抽象访问者角色 * @author wdt * */ interface Element{ public void visit(IVisitor v); } /** * 具体元素对象 实现抽象元素对象的方法 * @author wdt * */ class ConcreteElement1 extends Element { public void doSomething(){ System.out.println("这是元素1"); } public void accept(IVisitor visitor) { visitor.visit(this); } } class ConcreteElement2 extends Element { public void doSomething(){ System.out.println("这是元素2"); } public void accept(IVisitor visitor) { visitor.visit(this); } }
public class Client { public static void main(String[] args){ List<Element> list = new ArrayList<Element>(); list.add(new ConcreteElement1()); list.add(new ConcreteElement2()); for(Element e: list){ e.accept(new Visitor()); //接见访问者 } } }
使用场景:
1、一些对象关系比较弱的行为,可以使用访问者模式,将这些弱关系行为放在访问者中。
相关推荐
**访问者模式(VisitorPattern)** 访问者模式是一种行为设计模式,它使你能在不修改对象结构的前提下向对象添加新的操作。这种模式常用于处理具有复杂逻辑的对象结构,特别是当你需要对这些对象进行多态操作时。访问...
访问者模式(Visitor)是一种行为设计模式,它允许在不修改对象结构的前提下向对象结构中的元素添加新的操作。这种模式将算法与数据结构分离,使得算法可以独立于数据结构进行变化,增强了系统的可扩展性。 在C++中...
**访问者模式(Visitor)详解** 访问者模式是一种行为设计模式,它使你可以在不修改对象结构的情况下,为对象添加新的操作。这种模式的核心在于将数据结构与对这些数据的操作解耦,使得增加新的操作变得容易,同时...
**访问者模式(Visitor Pattern)**是一种行为设计模式,它提供了一种在不修改对象结构的情况下增加新操作的方法。这种模式的主要思想是将数据结构与算法分离,使得算法可以在不改变对象结构的情况下独立变化。 在...
访问者模式(Visitor)是一种行为设计模式,它允许在不修改对象结构的前提下向对象结构中的元素添加新的操作。这种模式的核心思想是分离了算法和对象结构,使得算法可以在不改变对象结构的情况下独立变化。 访问者...
C#面向对象设计模式 (行为型模式) Visitor 访问者模式 视频讲座下载
### C#面向对象设计模式纵横谈(24):(行为型模式) Visitor 访问者模式 #### 概述 在本篇文章中,我们将深入探讨面向对象设计模式中的一个非常重要的模式——**Visitor(访问者)模式**。此模式属于行为型模式的一...
《访问者模式在实际开发中的应用深度解析》 访问者模式是设计模式中的一种行为模式,它在实际的软件开发中具有重要的应用价值。通过理解并掌握访问者模式,开发者可以更好地实现对象结构中元素的操作,同时保持元素...
本项目基于“visitor模式”和“访问者模式”,实现了用于计算表达式的求值引擎,这涉及到一种将数学表达式转化为数据结构(表达式树)的方法,然后通过遍历该树来执行计算。下面我们将详细探讨这些概念。 1. **...
访问者模式(Visitor Pattern)是GoF提出的23种设计模式中的一种,属于行为模式。它表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。从定义可以看出,...
访问者模式(Visitor Pattern)是一种行为型设计模式,它允许我们向一组已存在的类添加新的行为,而无需修改这些类。这种模式的核心思想是在不改变元素类的前提下,通过引入新的访问者来扩展系统的功能。 #### 二、...
1、策略模式STRATEGY PATTERN 2、代理模式PROXY PATTERN 3、单例模式SINGLETON PATTERN ...18、访问者模式VISITOR PATTERN 19、状态模式 20、原型模式 21、中介者模式 22、解释器模式 23、亨元模式 24、备忘录模式
访问者模式是一种软件设计模式,它在对象结构中定义了一个访问者的接口,使得该访问者可以访问该结构中的每一个元素,同时不影响这些元素自身的行为。这种模式的主要目的是将数据操作和业务逻辑分离,使得数据结构...
访问者模式(Visitor Pattern)是一种行为设计模式,它使你能在不修改对象结构的前提下向其添加新的操作。这种模式常用于处理具有相同接口或抽象类的对象结构,使得可以在不改变原有结构的基础上增加功能,实现对...
**访问者模式**是一种行为设计模式,它允许在不修改对象结构的情况下添加新的操作。这种模式主要用于处理具有复杂对象结构的情况,使得我们可以对结构中的每个元素执行特定操作,而无需暴露其内部实现。 访问者模式...
访问者模式(Visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 紧接着,给出其类结构图。 访问者模式适用于数据结构相对稳定的系统,它把...
访问者模式是一种软件设计模式,它在对象结构中定义了一个访问者的接口,使得该访问者可以访问该结构中的每一个元素,同时不影响对象结构本身。这种模式的主要目的是将数据操作与数据结构分离,使得数据结构的变化...
访问者模式的主要组成部分包括:`Element`(元素)、`ConcreteElement`(具体元素)、`Visitor`(访问者)和`ConcreteVisitor`(具体访问者)。以下是对这些组件的详细解释: 1. **Element(元素)**:这是构成对象...
**访问者模式**是软件设计模式中的一种结构型模式,它允许在不修改对象结构的情况下,在对象上增加新的操作。这种模式将数据结构与数据操作分离,使得代码更易于维护和扩展。 在Java中实现访问者模式,通常包括以下...