访问者模式感悟

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

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

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

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

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

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

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

---

### 🎯 类比解释

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值