消息处理程序和命令处理程序之间有区别吗?

时间:2011-07-30 15:55:02

标签: design-patterns architecture command message handler

消息处理程序命令处理程序之间有区别吗? 或命令消息之间有区别?

编辑:有第三个名为命令消息的消息......呃。

2 个答案:

答案 0 :(得分:2)

实际上,差异不在于结构和实现,而是在概念上 - 这两种结构都代表不同的概念。

消息 - 传输某种信息的结构

命令 - 触发某种行为的结构

也就是说,命令是一种消息,因为它传输有关动作的信息至少要调用(在大多数情况下还有其他参数)。 在实现方面,MessageHandler和CommandHandler看起来非常相似,并且取决于您想要对信息做什么。

实施例

UserRegisteredMessage(userName) - 一条消息,告知系统中使用的已注册用户,处理程序可以在UI上显示此信息

RegisterUserCommand(userName) - 指示我们的系统注册用户的命令,这可能涉及某种额外的操作(如检查唯一性),并且可能会失败。

答案 1 :(得分:1)

根据我的经验,主要是语义,以及放置模式的位置。消息可能有也可能没有副作用,其中命令暗示它会。此外,我认为命令模式旨在作为客户端上的ui模式(通常,但并非总是如此),其中消息模式意味着网络跳跃的可能性。

此外,在大多数实现中,消息更松散地耦合。您在可能收听或未收听的频道上发送消息。命令(通常,并非总是)在执行时是一种更直接的关系。