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、一些对象关系比较弱的行为,可以使用访问者模式,将这些弱关系行为放在访问者中。
相关推荐
访问者模式(Java代码实现),博文附件
设计模式C++学习之访问者模式(Visitor)
访问者模式(Visitor) 用意:适用于数据结构相对未定的系统,把数据结构和作用于结构上的操作间的耦合解开。
C#面向对象设计模式 (行为型模式) Visitor 访问者模式 视频讲座下载
C#面向对象设计模式纵横谈(24):(行为型模式) Visitor 访问者模式
访问者模式(Visitor Pattern)是GoF提出的23种设计模式中的一种,属于行为模式。它表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。从定义可以看出,...
1、策略模式STRATEGY PATTERN 2、代理模式PROXY PATTERN 3、单例模式SINGLETON PATTERN ...18、访问者模式VISITOR PATTERN 19、状态模式 20、原型模式 21、中介者模式 22、解释器模式 23、亨元模式 24、备忘录模式
设计模式 -访问者(Visitor)模式详解和应用.pdf
Visitor(访问者模式)属于行为型模式。意图:表示一个作用于某对象结构中的各元素的操作。
表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
面向对象 北工大 课设 使用多种设计模式,实现的求值引擎,包括表达式树的构建
c++设计模式-行为型模式-访问者模式;qt工程;c++简单源码; 访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新...
访问者模式(Visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
访问者模式的示例代码和文档,学习访问者模式的参考资料。
C#面向对象设计模式纵横谈(24):(行为型模式) Visitor 访问者模式.rar 李建忠主讲 上海祝成信息科技有限公司担任软件架构师,并讲授C#/.NET软件开发课程
访问者模式表示一个作用于某对象结构中各元素的操作。它可以在不修改各元素类的前提下定义作用于这些元素的新操作,即动态的增加具体访问者角色。 访问者模式利用了双重分派。先将访问者传入元素对象的Accept方法中...
主要介绍了iOS应用的设计模式开发中的Visitor访问者模式的实例,示例代码为传统的Objective-C,需要的朋友可以参考下
访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。System.Collection命名空间下提供了大量集合操作对象。但大多数情况下处理的都是...
主要介绍了C#设计模式之Visitor访问者模式解决长隆欢乐世界问题,简单描述了访问者模式的定义并结合具体实例形式分析了C#使用访问者模式解决长隆欢乐世界问题的具体实现技巧,需要的朋友可以参考下