首页/开发/代码质量与评审速查/访问者模式 Visitor(行为型)
设计原则与模式62 条

访问者模式 Visitor(行为型)

把作用于对象结构的操作从元素类中分离:元素接受访问者,操作以访问者形式新增,元素类无需改动;元素类型频繁新增时此模式成本较高。

意图操作与结构分离、双重分派
适合元素类型稳定、操作种类持续增加
代价新增元素类型要改所有访问者

Java 示例

Java 示例
interface Shape { void accept(Visitor v); }
interface Visitor {
    void visit(Circle c);
    void visit(Square s);
}
class AreaCalculator implements Visitor { ... }

易错点

  • 元素类型频繁增加:每个访问者都要跟着改
  • 访问者依赖元素内部状态:封装被穿透

数据来源与参考

  • 《设计模式》(GoF)· Visitor
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌