让我向您展示观察者模式和命令模式之间的连接/相似,这让我感到惊讶。以下是观察者模式的类图:

以下是命令模式的类图,我在其上添加了一个红色箭头来表示接收方和调用方之间可能存在继承关系:

以下是值得注意的几点:
execute()即可。Update()。对,是这样?
发布于 2019-04-04 09:34:09
命令模式为在不直接支持这些特性的语言中处理函数指针和闭包提供了一个抽象。
观察者模式为不直接支持事件的语言提供事件系统(主题通知一个或多个侦听器功能,通知主题状态的变化)。
两种方法都使用对象来提供函数指针抽象。有相似之处。但是它们之间最大的区别是,观察者模式处理多个函数,而命令模式只处理一个函数。
发布于 2020-12-19 10:50:11
观察者模式是-命令模式?
这是一个非常糟糕的方式来思考设计模式。
设计模式不是构建块。把它们当作构建块,然后在这些构建块中寻找相似之处可能很有趣,就像在云中找到形状是有趣的,但在构建系统时却没有帮助。
相反,设计模式是对设计问题的答案--建议的答案。仅仅因为两个问题有相似的建议答案,并不一定意味着问题本身在任何方面都是相关的。软件工程的目的是理解和解决问题,而不是专注于答案。
发布于 2019-04-04 09:28:57
我想说,这两种模式的不同之处在于,在命令模式中,您有一个命令对象。它被传递,可以持久化并包含执行所需的所有信息。
例:BuyProduct: Command { product, user }
使用观察者模式,您没有对象,只需转发一般的更改事件。
eg CollectionChanged(List<Item> addedItems added, List<Item> removedItems)
https://softwareengineering.stackexchange.com/questions/389758
复制相似问题