处理而不是执行的命令的任何模式名称

时间:2015-03-06 09:57:47

标签: design-patterns

Gof的命令模式描述了一个带有execute方法的命令。这是在Wpf和Silverlight中,例如在ICommand接口中定义,富含CanExecute方法。这种类型的命令封装了要执行的操作的参数,以及调用执行的逻辑。要做到这一点,它必须知道执行上下文(执行方法可以调用所需的方法,以及canexecute方法可以验证它是否可能)。这种类型的命令负责自己的执行。

在CQRS中,例如其他类型的"命令"用来。它本身没有Execute方法,也不负责自己的执行。它只是封装了所需的参数,并由执行调用的命令处理程序处理。这种类型的命令具有以下优点:它不需要知道执行上下文,因此更容易序列化并且它具有更多的关注点分离。

我的问题是:Gof"命令模式"中涵盖了第一种命令。第二种类型的命令是否有任何模式名称?

我有一个应用程序,我想使用这两种类型的命令,我必须为它们选择不同的名称。我倾向于" Command"和#34; HandledCommand"但如果有的话,我想选择一个众所周知的模式名称。

1 个答案:

答案 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 Processor UML class diagram of Structure and Participants


Command Bus模式http://php-and-symfony.matthiasnoback.nl/2015/01/responsibilities-of-the-command-bus/是一个适用于网站开发的相关理念。

相关问题