知识卡片
访问者模式是迭代器模式无法胜任时的扩充
内容
[[访问者模式的定义与五个角色]]的适用信号:对象结构含多种不同类型对象,需对其执行依赖 具体类型的不同操作,而普通[[迭代器模式的定义与四个角色]]只能对同类型元素统一遍历。访问 者模式是对迭代器模式的扩充,让遍历时可按元素类型执行不同操作,也常充当拦截器角色。发散: 应先看普通迭代器能否满足遍历需求,只有”元素类型不同、处理逻辑因类型而异”成为硬需求时, 才升级到访问者模式。
参考来源
- 位置:《设计模式之禅(第2版)》第25章《访问者模式》(源文件:_epub-src/text/part0116.html)
- 结论依据:原文说明"一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作,也就说是用迭代器模式已经不能胜任的情景……访问者模式是对迭代器模式的扩充,可以遍历不同的对象,然后执行不同的操作"。
- 原始内容:一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作,也就说是用迭代器模式已经不能胜任的情景……迭代器模式只能访问同类或同接口的数据……访问者模式是对迭代器模式的扩充。