访问者模式:改变对象状态?

Visitor pattern: change object state?

访问者更改其操作对象的状态是否可以接受? 这些操作不被视为反模式?

修改访问对象完全没问题

只需确保您的访问者 class 的名称正确,这样很明显它有 side-effect.

只要访问者只使用public接口和none接口方法就可以让访问者将对象置于无效状态。访问者可以自由改变被访问对象的状态。

正如其他答案所提到的,没有 anti-pattern 在访问期间改变对象;但与所有可变状态一样,在 multi-threaded 场景中必须小心。确保没有其他线程与访问者同时改变对象,否则确保正确同步。