访问者模式 曾经终败给现在 2022-09-01 14:47 91阅读 0赞 转载:[访问者模式 - C语言中文网][- C] > 在现实生活中,有些集合对象存在多种不同的元素,且每种元素也存在多种不同的访问者和处理方式。例如,公园中存在多个景点,也存在多个游客,不同的游客对同一个景点的评价可能不同;医院医生开的处方单中包含多种药元素,査看它的划价员和药房工作人员对它的处理方式也不同,划价员根据处方单上面的药品名和数量进行划价,药房工作人员根据处方单的内容进行抓药。 > > 这样的例子还有很多,例如,电影或电视剧中的人物角色,不同的观众对他们的评价也不同;还有顾客在商场购物时放在“购物车”中的商品,顾客主要关心所选商品的性价比,而收银员关心的是商品的价格和数量。 访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。 **这些被处理的数据元素相对稳定而访问方式多种多样**。访问者模式能把处理方法从数据结构中分离出来,并可以根据需要增加新的处理方法,且不用修改原来的程序代码与数据结构,这提高了程序的扩展性和灵活性。 **增加新的元素类很困难。在访问者模式中,每增加一个新的元素类,都要在每一个具体访问者类中增加相应的具体操作,这违背了“开闭原则”**。 访问者模式包含以下主要角色。 1. 抽象访问者(Visitor)角色:定义一个访问具体元素的接口,为每个具体元素类对应一个访问操作 visit() ,该操作中的参数类型标识了被访问的具体元素。 2. 具体访问者(ConcreteVisitor)角色:实现抽象访问者角色中声明的各个访问操作,确定访问者访问一个元素时该做什么。 3. 抽象元素(Element)角色:声明一个包含接受操作 accept() 的接口,被接受的访问者对象作为 accept() 方法的参数。 4. 具体元素(ConcreteElement)角色:实现抽象元素角色提供的 accept() 操作,其方法体通常都是 visitor.visit(this) ,另外具体元素中可能还包含本身业务逻辑的相关操作。 5. 对象结构(Object Structure)角色:是一个包含元素角色的容器,提供让访问者对象遍历容器中的所有元素的方法,通常由 List、Set、Map 等聚合类实现。 其结构图如下图所示。 ![在这里插入图片描述][d3b931bcfc344093aa76c0cf5f16248b.gif_pic_center] [- C]: http://c.biancheng.net/view/1397.html [d3b931bcfc344093aa76c0cf5f16248b.gif_pic_center]: /images/20220829/10c509693ad6489dbdf588862be7e309.png
相关 java 访问者模式_设计模式之访问者模式 public interface Visitor \{ public void visitString(StringElement stringE); public voi 今天药忘吃喽~/ 2022年11月05日 15:55/ 0 赞/ 120 阅读
相关 访问者模式 一、前言 `能力,是你前行的最大保障` 年龄会不断的增长,但是什么才能让你不慌张。一定是能力,即使是在一个看似还很安稳的工作中也是一样,只有拥有`能留下的本事`和`跳出 喜欢ヅ旅行/ 2022年10月17日 10:36/ 0 赞/ 106 阅读
相关 访问者模式 include <iostream> include <list> include <string> using namespace std; 川长思鸟来/ 2022年09月24日 11:25/ 0 赞/ 98 阅读
相关 访问者模式 转载:[访问者模式 - C语言中文网][- C] > 在现实生活中,有些集合对象存在多种不同的元素,且每种元素也存在多种不同的访问者和处理方式。例如,公园中存在多个景点,也存 曾经终败给现在/ 2022年09月01日 14:47/ 0 赞/ 92 阅读
相关 访问者模式 1.使用场景: 在一个集合中有一些不同的子类对象,需要分别对这些子类对象做处理。常常应用于XML文档的解析、编辑器的解析等。 2.UML表示: 2.1 Visit 比眉伴天荒/ 2022年05月31日 09:27/ 0 赞/ 144 阅读
相关 访问者模式 提供一个访问者对象,这个对象可以通过传入的不同类调用不同方法 像这样: function accept(foo $foo){ $method="visit" ╰半橙微兮°/ 2021年12月21日 00:59/ 0 赞/ 156 阅读
相关 访问者模式 前言 访问者模式(Visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变元素的类的前提下定义作用于这些元素的新操作。 一、状态抽象类和人的 妖狐艹你老母/ 2021年12月09日 00:55/ 0 赞/ 194 阅读
相关 访问者模式 推荐文章:[https://www.cnblogs.com/edisonchou/p/7247990.html][https_www.cnblogs.com_edisoncho 小灰灰/ 2021年11月11日 02:28/ 0 赞/ 196 阅读
相关 访问者模式 21.访问者模式 ![70][] public abstract class Element { public abst 刺骨的言语ヽ痛彻心扉/ 2021年09月17日 00:08/ 0 赞/ 327 阅读
相关 访问者模式 一 点睛 定义 封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。 二 结构 访问者模式包含以下主要角 电玩女神/ 2021年07月24日 16:40/ 0 赞/ 319 阅读
还没有评论,来说两句吧...