我最近阅读了有关命令模式的信息
此模式用于“表示和封装以后调用方法所需的所有信息”。
从 C# 委托“创建封装方法调用 + 目标对象详细信息的对象”有什么区别?这些不是都提供相同(或非常相似)的功能吗?
我最近阅读了有关命令模式的信息
此模式用于“表示和封装以后调用方法所需的所有信息”。
从 C# 委托“创建封装方法调用 + 目标对象详细信息的对象”有什么区别?这些不是都提供相同(或非常相似)的功能吗?
它非常相似,但我认为它是相反的。
命令是其他东西调用目标委托或对象的地方。事件是对n 个订阅者的广播。
另一个区别是事件的所有者不必知道所有不同的订阅者。
WPF 都有命令和事件。假设你有一个按钮。您可以订阅该Click
事件,或者您可以Command
在您的视图模型中有一个在单击按钮时会被调用的事件。
C# 中的事件实际上是观察者模式的实现。
观察者和指挥者之间的区别主要在于他们试图解决的问题。在命令模式中,目的是将执行动作的决定与执行动作分开。观察者模式的要点是通知感兴趣的各方发生了一些事情,而不必知道观察者的类型和数量,或者甚至可能根本不知道它们是否存在。
也就是说,放置在事件处理程序上的代表是命令。但是,这是一个实现细节,而不是事件的重点。如果您阅读观察者的文章,
实际上,最接近这种模式的 C# 特性是委托,而不是事件......
是的,它非常相似,但是命令模式支持更复杂的场景(例如撤消/重做的实现)