访问者模式:改变对象状态?
Visitor pattern: change object state?
访问者更改其操作对象的状态是否可以接受?
这些操作不被视为反模式?
修改访问对象完全没问题
只需确保您的访问者 class 的名称正确,这样很明显它有 side-effect.
只要访问者只使用public接口和none接口方法就可以让访问者将对象置于无效状态。访问者可以自由改变被访问对象的状态。
正如其他答案所提到的,没有 anti-pattern 在访问期间改变对象;但与所有可变状态一样,在 multi-threaded 场景中必须小心。确保没有其他线程与访问者同时改变对象,否则确保正确同步。
访问者更改其操作对象的状态是否可以接受? 这些操作不被视为反模式?
修改访问对象完全没问题
只需确保您的访问者 class 的名称正确,这样很明显它有 side-effect.
只要访问者只使用public接口和none接口方法就可以让访问者将对象置于无效状态。访问者可以自由改变被访问对象的状态。
正如其他答案所提到的,没有 anti-pattern 在访问期间改变对象;但与所有可变状态一样,在 multi-threaded 场景中必须小心。确保没有其他线程与访问者同时改变对象,否则确保正确同步。