知识卡片

一批元素可以同时接受多个独立的访问者

普通读书笔记卡 · 1993.a.3

内容

[[访问者模式的定义与五个角色]]中同一批元素可分别accept多个独立Visitor:ShowVisitor组装 展示信息,TotalVisitor按系数累加工资总额,各自维护状态互不干扰。发散:这说明访问者模式 天然支持”同一数据、多种独立视角”,每新增一个分析维度只需新增一个Visitor,不影响已有 实现,优于堆砌if判断分别统计。

参考来源

- 位置:《设计模式之禅(第2版)》第25章《访问者模式》(源文件:_epub-src/text/part0115.html) - 结论依据:原文展示ShowVisitor(展示报表)和TotalVisitor(汇总工资总额)两个独立的Visitor实现,场景类对每个员工依次调用`emp.accept(showVisitor)`和`emp.accept(totalVisitor)`分别得到展示结果和汇总结果。 - 原始内容:报表分两种:第一种是展示表……第二种是汇总表……这两种报表格式是对同一堆数据的两种处理方式……for(Employee emp:mockEmployee()){ emp.accept(showVisitor); emp.accept(totalVisitor); }