Gof的命令模式描述了一个带有execute方法的命令。这是在Wpf和Silverlight中,例如在ICommand接口中定义,富含CanExecute方法。这种类型的命令封装了要执行的操作的参数,以及调用执行的逻辑。要做到这一点,它必须知道执行上下文(执行方法可以调用所需的方法,以及canexecute方法可以验证它是否可能)。这种类型的命令负责自己的执行。
在CQRS中,例如其他类型的"命令"用来。它本身没有Execute方法,也不负责自己的执行。它只是封装了所需的参数,并由执行调用的命令处理程序处理。这种类型的命令具有以下优点:它不需要知道执行上下文,因此更容易序列化并且它具有更多的关注点分离。
我的问题是:Gof"命令模式"中涵盖了第一种命令。第二种类型的命令是否有任何模式名称?
我有一个应用程序,我想使用这两种类型的命令,我必须为它们选择不同的名称。我倾向于" Command"和#34; HandledCommand"但如果有的话,我想选择一个众所周知的模式名称。
答案 0 :(得分:1)
也许答案在Command Processor
模式中找到,如POSA Vol中所定义。 1并在此处进行了说明:http://www.dre.vanderbilt.edu/~schmidt/cs282/PDFs/8-Services-and-IPC-parts-7-8-and-9.pdf以及https://www.youtube.com/watch?v=PJvnMP94Kqw
意图
- 打包一个应用程序功能 - 以及它 对象中的参数化 - 使其在另一个上下文中可用,例如 在时间上或在不同的线程中
适用性
当需要解耦什么代码的决定时 应该从何时应该发生的决定中执行
例如,指定,队列和&在不同时间执行服务请求
当需要确保服务增强不会中断时 现有代码
我使用PlantUML复制了类图:
Command Bus
模式http://php-and-symfony.matthiasnoback.nl/2015/01/responsibilities-of-the-command-bus/是一个适用于网站开发的相关理念。