| 意图 | 操作与结构分离、双重分派 |
|---|---|
| 适合 | 元素类型稳定、操作种类持续增加 |
| 代价 | 新增元素类型要改所有访问者 |
Java 示例
Java 示例
interface Shape { void accept(Visitor v); }
interface Visitor {
void visit(Circle c);
void visit(Square s);
}
class AreaCalculator implements Visitor { ... }把作用于对象结构的操作从元素类中分离:元素接受访问者,操作以访问者形式新增,元素类无需改动;元素类型频繁新增时此模式成本较高。
| 意图 | 操作与结构分离、双重分派 |
|---|---|
| 适合 | 元素类型稳定、操作种类持续增加 |
| 代价 | 新增元素类型要改所有访问者 |
interface Shape { void accept(Visitor v); }
interface Visitor {
void visit(Circle c);
void visit(Square s);
}
class AreaCalculator implements Visitor { ... }