访问者模式将数据和行为分开来
public class Visitor{//访问着
visit(Acceptor acceptor);//访问者访问Acceptor,同时操作Acceptor
}
public interface Acceptor{//接受者
accept(Visitor v);//接受访问者的访问,把自己的数据传递给访问者
}
每当有新的行为时候,只需要在访问者中添加就可以了,避免对Acceptor封装的破坏,实现了对修改关闭,对扩展开发
分别对Visitor和Acceptor的扩展可以实现双层派发,使得访问者和接受者都可以操控对方,实现双重的继承和扩展