命令模式与访客模式

发布于 2024-09-02 03:54:14 字数 40 浏览 6 评论 0原文

允许访问者修改接收者的状态通常是可以接受的,还是应该改为命令模式?

Is it generally acceptable to allow a Visitor to modify state of the Receiver, or should that be a Command pattern instead?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

捎一片雪花 2024-09-09 03:54:14

访问者模式的目的是允许将新操作添加到类层次结构中,而无需修改该层次结构。我从未见过有人建议只接受只读操作。唯一的限制是添加的操作只能使用类层次结构的公共接口。

The purpose of the visitor pattern is to allow new operations to be added to a class heirarchy without modification to that heirarchy. I've never seen anyone suggesting that only read-only operations are acceptable. The only limitation is that the added operations should only use the public interface of the class heirarchy.

一个人练习一个人 2024-09-09 03:54:14

我认为你不能笼统地声明修改任何东西的状态是好还是坏。我认为只要不影响访问逻辑本身,修改状态就可以了。例如,您可以编写一个访问者来访问文件夹结构下的所有文件并将文件名重命名为大写。

I don't think you can make a blanket statement whether it's good or bad to modify state of anything. I would think it's ok to modify the states as long as it does not affect the visiting logic itself. For example, you might write a visitor that visits all files under folder structure and renames the file name to upper case.

风渺 2024-09-09 03:54:14

Microsoft 的访问者修改接收器的示例是 ExpressionVisitor 。 ExpressionVisitor 类的目的是修改表达式树。所以我猜微软至少认为这是可以接受的。

Microsoft's example of a visitor modifying the receiver is the ExpressionVisitor. The purpose of the ExpressionVisitor class is to modify an Expression tree. So I guess Microsoft at least thinks it's acceptable.

羁〃客ぐ 2024-09-09 03:54:14

每种模式都有自己的优点、缺点和用例。

您可以使用Command模式来

  1. 解耦调用者和调用者。命令接收者

  2. 实现回调机制

  3. 实现撤消和重做功能

  4. 维护命令历史记录

使用Visitor 以下场景中的模式:

  1. 必须对结构中分组的不同类型的对象执行类似的操作
  2. 您需要执行许多不同且不相关的操作。它将操作与对象结构分开,
  3. 必须添加新操作而不改变对象结构

相关帖子:

使用命令设计模式

我什么时候应该使用访客设计模式?

Each pattern has it's own pros, cons and use cases.

You can use Command pattern to

  1. Decouple the invoker & receiver of command

  2. Implement callback mechanism

  3. Implement undo and redo functionality

  4. Maintain a history of commands

Use Visitor pattern in below scenarios:

  1. Similar operations have to be performed on objects of different types grouped in a structure
  2. You need to execute many distinct and unrelated operations. It separates Operation from objects Structure
  3. New Operations have to be added without change in object structure

Related posts:

Using Command Design pattern

When should I use the Visitor Design Pattern?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文