CH06_访问数据结构

Visitor 模式

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

类图

在这里插入图片描述

说明

  • Visitor(访问者)

    Visitor角色负责对数据结构中每一个具体的元素(ConcreteElement角色)声明一个用于访问XXXX的visit(XXXX)方法。visit(XXXX)是用于处理XXXX的方法,负责实现该方法的是ConcreteVisitor角色。

  • ConcreteVisitor(具体的访问者)

    ConcreteVisitor角色负责实现Visitor角色所定义的接口(API)。它要实现所有的visit(XXXX)方法,即实现如何处理每一个ConcreteElement角色。

  • Element(元素)

    Element角色表示Visitor角色的访问对象,它声明了接受访问者的accept方法。accept方法接收到的参数是Visitor角色。

  • ConcreteElement

    ConcreteElement角色负责实现Element角色所定义的接口(API)。

  • ObjectStructure(对象结构)

    ObjectStructure角色负责处理Element角色的集合。ConcreteVisitor角色为每一个Element角色都准备了处理方法。

Chain of Responsibility 模式

职责链模式(Chain of Responsibility),使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有个对象处理它为止。

类图

在这里插入图片描述

  • Handler(处理者)

    Handler角色定义了处理请求的接口(API)。Handler角色知道“下一个处理者”是谁,如果自己无法处理请求,它会将请求转给“下一个处理者“,“下一个处理者”也是Handler角色。

  • ConcreteHandler(具体的处理者)

    ConcreteHandler角色是处理请求的具体角色。

  • Client(请求者)

    Client角色是向第一个ConcreteHandler角色发送请求的角色。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/292478.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习:手撕 AlphaGo(一)

图 1-1: AphaGo 结构概览 1. 前言 AlphaGo 是一个非常经典的模型,不论从影响力还是模型设计上。它的技术迭代演进路径:AlphaGo,AlphaGoZero,AlphaZero,MuZero 更是十分精彩。相信有很多同学因为听了 AlphaGo 的故事对…

IDEA创建springboot工程

选择spring boot的版本和依赖 finish创建完成 删除无用的文件

Linux 一键部署TeamCity

前言 TeamCity 是一个通用的 CI/CD 软件平台,可实现灵活的工作流程、协作和开发实践。允许在您的 DevOps 流程中成功实现持续集成、持续交付和持续部署。 系统支持Centos7,8,9/Redhat7,8,9及复刻系列download TeamCity TeamCity 文档参考TeamCity downloaddownloadTeamCi…

PHP开发日志——循环和条件语句嵌套不同,效率不同(循环内加入条件语句,条件语句判断后加入循环,array_map函数中加入条件语句)

十多年前开发框架时,为了效率不断试过各种代码写法,今天又遇到了,想想php8时代会不会有所变化,结果其实也还是和当年一样,但当年没写博客,但现在可以把数据记录下来了。 PHP_loop_ireflies_dark_forest 项目…

泽攸科技SEM台式扫描电子显微镜

泽攸科技是一家国产的科学仪器公司,专注于研发、生产和销售原位电镜解决方案、扫描电镜整机、台阶仪、探针台等仪器。目前台式扫描电镜分为三个系列:ZEM15、ZEM18、ZEM20。 ZEM15台式扫描电镜: ZEM18台式扫描电镜: ZEM20台式扫描…

Elasticsearch:什么是文本分类?

文本分类定义 - text classification 文本分类是一种机器学习,它将文本文档或句子分类为预定义的类或类别。 它分析文本的内容和含义,然后使用文本标签为其分配最合适的标签。 文本分类的实际应用包括情绪分析(确定评论中的正面或负面情绪&…

通话不中断的最短路径 - 华为机试真题题解

分值: 200分 题解: Java / Python / C++ 题目描述 给定一个MxN的网格,其中每个单元格都填有数字,数字大小表示覆盖信号强度。灰色网格代表空地,橙色网格代表信号覆盖区域,绿色网格代表基站,绿色网格内数字大小表示该基站发射信号的初始强度。 基站信号每向外(上下左右…

RK3568驱动指南|第八篇 设备树插件-第78章 用户空间创建item实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

数值分析(只为应付考试)

概述 研一时为应付高等工程数学考试整理的有关数值分析部分的内容,目的是为了应付考试。 误差 误差限与有效数字的联系 对于有 n n n 位有效数字的 x x x 的近似值 x ∗ x^* x∗, 其科学计数法表示形式 x ∗ a 1 . a 2 . . . a n 1 0 m ( a 1 ≠ 0 ) x^* …

MyBatis:动态 SQL 标签

MyBatis 动态 SQL 标签if 标签where 标签trim 标签choose 、when 、otherwise 标签foreach 标签附 动态 SQL 标签 MyBatis 动态 SQL 标签,是一组预定义的标签,用于构建动态的 SQL 语句,允许在 SQL 语句中使用条件、循环和迭代等逻辑。通过使…

java 项目日记实现两种方式:拦截器方式实现日记与定义日记注解方式实现日记

通常只要是java web项目基本都离不开项目日记,项目日记存在的意义很多,例如:安全审计,问题追踪都离不开项目日记。下面我们说一下项目日记实现最常用的两种方式 。 一 拉截器实现项目日记 1 实现一个拦截器基类,用于事…

CTF之misc杂项解题技巧总结(2)——流量分析

通常比赛中会提供一个包含流量数据的 PCAP 文件,有时候也会需要选手们先进行修复或重构传输文件后,再进行分析。 PCAP 这一块作为重点考察方向,复杂的地方在于数据包里充满着大量无关的流量信息,因此如何分类和过滤数据是参赛者需…