当前位置: 首页 > news >正文

访问者模式感悟

访问者模式 首先有两个东西:

一个是访问者vistor (每一个访问者类都代表了一类操作)

一个是被访问者entity (model /info/pojo/node等等这些都行)也就是是说是一个实体类 其操作方法被抽离给了其他类。

访问者模式的核心思想就是**“把操作从数据结构中分离出来,每种操作独立成一个访问者类”**,这样可以灵活地扩展操作,而无需修改数据结构本身。

虽然是访问者提供行为本身  但是 使用时 是被访问者来调用这个方法 。ta

访问者模式确实是由 被访问者(元素) 调用访问者的,这是访问者模式的一个关键特性,也是它实现 “双分派” 的机制。
被访问者调用访问者,被访问者提供了一个“入口”。来决定哪个访问者来访问它。

**非常贴切!**  
访问者模式确实有点像“病人看病,选择科室”,这个类比很形象地抓住了访问者模式的核心。

---

### 🎯 类比解释

#### 1️⃣ **病人(被访问者)**
- **特点**:类型固定(如病人发烧、病人手术、正常体检),职责是“被处理”。  
- **行为**:知道自己需要去哪个科室(调用 `accept` 方法)。  
- **例子**:  
  ```java
  病人 br = new 病人 ();
  br .accept(visitor);  // 病人知道自己需要去“哪个科室”
  ```

#### 2️⃣ **科室(访问者)**
- **特点**:每种操作是一个独立的访问者类(如发热门诊、临床科、化验科)。  
- **行为**:根据病人的类型提供不同的服务(如开药、手术、体检)。  
- **例子**:  
  ```java
  class 临床Visitor implements 科室Visitor

http://www.xdnf.cn/news/1189045.html

相关文章:

  • 泰山派GPIO编译 ADB下载 万用表测量GPIO电压
  • 【ELasticsearch】节点角色分类与作用解析
  • OpenCV学习探秘之二 :数字图像的矩阵原理,OpenCV图像类与常用函数接口说明,及其常见操作核心技术详解
  • 分治算法 (Divide and Conquer)原理、及示例-JS版
  • AI 编程工具 Trae 重要的升级。。。
  • 经典IDE之Turbo C
  • nginx的 `root` 和 `alias` 笔记250726
  • 0.深度学习环境配置步骤
  • VTK交互——ClientData
  • 英语听力口语词汇-8.美食类
  • (AC)Playlist
  • 【橘子分布式】gRPC(番外篇-监听流)
  • 15.6 DeepSpeed+Transformers实战:LLaMA-7B训练效率提升210%,显存直降73%
  • 前端设计中如何在鼠标悬浮时同步修改块内样式
  • Cgroup 控制组学习(一)
  • 基于深度学习的图像分类:使用Inception-v3实现高效分类
  • 前端基础知识Vue系列 - 29(怎么处理vue项目中的错误)
  • vue 脚手架配置代理
  • RS485转Profinet网关配置指南:高效启动JRT激光测距传感器测量模式
  • 深入解析三大Web安全威胁:文件上传漏洞、SQL注入漏洞与WebShell
  • Qt 线程池设计与实现
  • HTML 音频/视频
  • 从一个“诡异“的C++程序理解状态机、防抖与系统交互
  • 2025年02月11日 Go生态洞察:Go 1.24 发布亮点全面剖析
  • 二叉搜索树(Binary Search Tree)详解与java实现
  • 【RK3568 PWM 子系统(SG90)驱动开发详解】
  • 记录和分享抓取的数字货币和大A时序数据
  • k8s:将打包好的 Kubernetes 集群镜像推送到Harbor私有镜像仓库
  • 容器化成本优化:K8s资源请求与限制的黄金法则——从资源画像分析到25%成本削减的实战指南
  • python面向对象编程详解