改成访问者模式