.NET中的命令模式与事件语法

时间:2012-05-05 21:06:34

标签: c# .net design-patterns command

我最近阅读了Command Pattern

此模式用于“表示并封装稍后调用方法所需的所有信息。”

从C#委托创建“封装方法调用+目标对象详细信息的对象”之间有什么区别?这些都不提供相同(或非常相似)的功能吗?

3 个答案:

答案 0 :(得分:3)

它非常相似,但我认为它是相反的。

命令是其他东西调用目标委托或对象的地方。事件是对 n - 号码订户的广播。

另一个不同之处在于,活动的所有者不必知道所有不同的订阅者。

WPF都有命令和事件。假设你有一个按钮。您可以订阅Click事件,也可以在视图模型中使用Command,以便在单击按钮时调用该文件。

答案 1 :(得分:2)

C#中的事件实际上是Observer Pattern的实现。

观察者和命令之间的区别主要是他们试图解决的问题。在命令模式中,目的是将执行操作的决策与执行操作分开。观察者模式的要点是在不必知道观察者的类型和数量的情况下通知有关各方,或者甚至可能存在观察者的情况。

也就是说,代表们把事件处理程序放在命令中。但是,这是一个实现细节,而不是事件的重点。如果您阅读了观察者的文章,

答案 2 :(得分:1)

实际上,最接近这种模式的C#功能是代表,而不是事件......

是的,它非常相似,但Command模式可以实现更复杂的场景(例如撤消/重做的实现)