允许访问者修改Receiver的状态或者是否应该是Command模式通常是否可接受?
答案 0 :(得分:5)
访问者模式的目的是允许将新操作添加到类层次结构而不修改该层次结构。我从未见过有人建议只接受只读操作。唯一的限制是添加的操作应该只使用类层次结构的公共接口。
答案 1 :(得分:2)
我认为你无法全面陈述修改任何状态是好还是坏。我认为只要它不影响访问逻辑本身就可以修改状态。例如,您可以编写访问文件夹结构下的所有文件的访问者,并将文件名重命名为大写。
答案 2 :(得分:1)
微软的访问者修改接收者的例子是ExpressionVisitor。 ExpressionVisitor类的目的是修改表达式树。所以我想微软至少认为它是可以接受的。
答案 3 :(得分:1)
每种模式都有自己的优点,缺点和用例。
您可以使用Command
模式
解密调用者&命令接收者
实施回调机制
实施撤消和重做功能
维护命令历史记录
在以下场景中使用Visitor
模式:
相关帖子: