访问者模式(双重分派)就其本身而言是一种非常有用的模式,但如果将任何新成员添加到继承层次结构中,它经常被仔细检查是否会破坏接口,这是一个有效的观点。
但是在 Java 8 中引入了默认方法之后,现在我们可以在接口中定义默认实现,客户端接口不会中断,客户端可以适当地优雅地采用更改后的接口。
interface Visitor{
public void visit(Type1 type);
public void visit(Type2 type);
//added after the first version of visitor is released
default public void visit(NewType type){
//some default implementation
}
}
NewType
如果将来引入新类型,现在使用默认方法不再破坏客户端代码。
这是否使访客更易于采用和有用?