(十四)访问者模式

1. 访问者模式定义

访问者模式(Visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。[DP]

2. 优缺点

  1. 访问者模式适用于数据结构相对稳定的系统。如果Element的具体类别不稳定,那么,每增加一种ConcreteElement,就需要在Visitor类的抽象方法就不可能稳定,需要在Visitor和它的子类中都增加一个方法,这就不符合开放-封闭原则;
  2. 访问者模式把数据结构和作用于数据结构上的操作之间的耦合解脱开,使得操作集合可以相对自由地演化;
  3. 访问者模式的目的是把处理从数据结构中分离出来。有比较稳定的数据结构,又有易于变化的算法的话,使用访问者模式就是比较合适,因为访问者模式使得算法操作的增加变得容易;
  4. 访问者的优点就是增加新的操作很容易,因为增加一个新的操作就意味着增加一个新的访问者。访问者模式将有关的行为集中到一个访问者对象中。
  5. 访问者的缺点也就是使增加新的数据结构变得困难。

3. 访问者模式基本代码

原文地址:https://www.cnblogs.com/walkinginthesun/p/9589941.html

时间: 2024-10-02 13:14:21

(十四)访问者模式的相关文章

设计模式学习总结(二十二)--访问者模式

定义 访问者模式就是表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作.访问者模式适用于数据结构相对稳定的系统. 角色 Vistor: 抽象访问者.为该对象结构中的ConcreteElement的每一个类声明的一个操作. ConcreteVisitor: 具体访问者.实现Visitor申明的每一个操作,每一个操作实现算法的一部分. Element: 抽象元素.定义一个Accept操作,它以一个访问者为参数. ConcreteElement:

Java设计模式菜鸟系列(十四)代理模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39856435 代理模式(Composite):代理模式其实就是多一个代理类出来,替原对象进行一些操作.比如咱有的时候打官司需要请律师,因为律师在法律方面有专长,可以替咱进行操作表达咱的想法,这就是代理的意思.代理模式分为两类:1.静态代理(不使用jdk里面的方法):2.动态代理(使用jdk里面的InvocationHandler和Proxy).下面请看示例: 一.静态代理 1.uml建模

JAVA多线程(十四)模式-Active Object

Active Object 通过代理接口,将生产.缓存.消费场景中缓存.消费与生产部分独立出来,通过future模式返回操作结果给生产部分. 缓存部分通过增加调度器来分配数据到执行者,这里可以让执行者由主动切换到被动.可以分离线程和执行策略. 可以由调度器进行负载均衡并可以路由数据处理策略以及执行者不可用时的补偿处理. 适用环境 需要根据数据情况处理多种业务,并且需要一定的调度.均衡.容错的场景. 样例 生产者 创建请求,通过接口调用生产部分消费,根据future同步或异步获取处理结果. 接口

设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)

1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用方法,但通常你会处理一组对象或者集合. 集合不一定是均一的.图形用户界面框架中的 Window 对象可以收集任意数量的控制对象 - Menu.Slider 和 Button.并且,集合的实现可以有多种方式:PHP 数字是一个集合,但也是一个散列表,一个链接列表,一个堆栈以及队列. 例子1:电视遥控器的频道遍历 2.问题 如何操纵任意的对象集合? 如一个列表(Lis

设计模式之十四:备忘录模式(Memento)

备忘录模式: 在不破换封装性的前提下,捕获一个对象的内部状态并将这个状态保存到对象外部,这样这个对象之后可以恢复到保存的状态. Without violating encapsulation, capture and externalize an object's internal state so that the object can be restored to this state later UML图: 主要包括: Memento(Memento):存储Originator的内部状态.

.NET设计模式访问者模式

一.访问者模式的定义: 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作. 二.访问者模式的结构和角色: 1.Visitor 抽象访问者角色,为该对象结构中具体元素角色声明一个访问操作接口.该操作接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色,这样访问者就可以通过该元素角色的特定接口直接访问它.2.ConcreteVisitor.具体访问者角色,实现Visitor声明的接口.3.Element 定义一个接受访问操作(accept

【C#设计模式-访问者模式】

一.访问者模式的定义: 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作. 二.访问者模式的结构和角色: 1.Visitor 抽象访问者角色,为该对象结构中具体元素角色声明一个访问操作接口.该操作接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色,这样访问者就可以通过该元素角色的特定接口直接访问它. 2.ConcreteVisitor.具体访问者角色,实现Visitor声明的接口. 3.Element 定义一个接受访问操作(acce

设计模式之二十四:访问者模式(Visitor)

访问者模式: 定义了一个作用于一个类的一些操作,访问者模式允许在不改变类的前提下增加一些操作. Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates. UML类图: 主要包括: Vis

云计算设计模式(二十四)——仆人键模式

云计算设计模式(二十四)——仆人键模式 使用一个令牌或密钥,向客户提供受限制的直接访问特定的资源或服务,以便由应用程序代码卸载数据传输操作.这个模式是在使用云托管的存储系统或队列的应用中特别有用,并且可以最大限度地降低成本,最大限度地提高可扩展性和性能. 背景和问题 客户端程序和网络浏览器经常需要读取和写入文件或数据流,并从一个应用程序的存储空间.通常,应用程序将处理的运动数据,或者通过从存储读取它,并将其传输到客户端,或通过从客户机读取该载流并将其存储在数据存储中.然而,这种方法吸收了宝贵的资