【发布时间】:2011-02-20 22:06:36
【问题描述】:
允许访问者修改接收者的状态通常是可以接受的,还是应该改为命令模式?
【问题讨论】:
标签: design-patterns command-pattern visitor-pattern mutability
允许访问者修改接收者的状态通常是可以接受的,还是应该改为命令模式?
【问题讨论】:
标签: design-patterns command-pattern visitor-pattern mutability
访问者模式的目的是允许在不修改该层次结构的情况下将新操作添加到类层次结构中。我从未见过有人建议只接受只读操作。唯一的限制是添加的操作只能使用类层次结构的公共接口。
【讨论】:
我认为你不能一概而论地说明修改任何事物的状态是好是坏。我认为修改状态是可以的,只要它不影响访问逻辑本身。例如,您可以编写一个访问者,访问文件夹结构下的所有文件并将文件名重命名为大写。
【讨论】:
Microsoft 的访问者修改接收器的示例是ExpressionVisitor。 ExpressionVisitor 类的目的是修改表达式树。所以我猜微软至少认为这是可以接受的。
【讨论】:
每种模式都有自己的优点、缺点和用例。
您可以使用Command 模式来
解耦命令的调用者和接收者
实现回调机制
实现撤消和重做功能
维护命令历史
在以下场景中使用Visitor 模式:
相关帖子:
【讨论】: