Applicability 21 抽象出待执行的动作以参数化某对象,可以代 替“回调”函数 口 在不同的时刻指定、排列和执行请求 口支持取消操作。Execute操作可以在实施前将状 态存储起来 支持修改日志,这样当系统崩溃时,这些修改 可以被重做一遍 0 用构建在原语操作上的高层操作构造一个系统, 支持“事务” Institute of Computer Software 2022-2-27 Nanjing University
Applicability 抽象出待执行的动作以参数化某对象,可以代 替“回调”函数 在不同的时刻指定、排列和执行请求 支持取消操作。Execute操作可以在实施前将状 态存储起来 支持修改日志,这样当系统崩溃时,这些修改 可以被重做一遍 用构建在原语操作上的高层操作构造一个系统, 支持“事务” 2022-2-27 Institute of Computer Software Nanjing University 21
&雪扇 Structure 1002 UNIVER 22 Client Invoker Command Execute( receiver Receiver Concrete Comm and Action Execute Receiver->Action; state Institute of Computer Software 2022-2-27 Nanjing University
Structure 2022-2-27 Institute of Computer Software Nanjing University 22
&扇 NAN Participants 0o2 UNIVE 23 Command 口声明执行操作的接口 ConcreteCommand 口将一个接收者对象绑定于一个动作 口调用接收者相应的操作以实现Execute Client 口创建一个具体命令对象并设定它的接收者 ▣Invoker 口要求该命令执行这个请求 Receiver 口 知道如何实施与执行一个请求相关的操作。任何类都可能作 为一个接收者 Institute of Computer Software 2022-2-27 Nanjing University
Participants Command 声明执行操作的接口 ConcreteCommand 将一个接收者对象绑定于一个动作 调用接收者相应的操作以实现Execute Client 创建一个具体命令对象并设定它的接收者 Invoker 要求该命令执行这个请求 Receiver 知道如何实施与执行一个请求相关的操作。任何类都可能作 为一个接收者 2022-2-27 Institute of Computer Software Nanjing University 23
&扇 Collaboration 0o2 UNIVE 24 aReceiver aClient aCommand anlnvoker new Command(aReceiver) StoreCommand(aCommand) Action() Execute() Decouple anlInvoker and aReceiver by aCommand Sample Code Institute of Computer Software 2022-2-27 Nanjing University
Collaboration 2022-2-27 Institute of Computer Software Nanjing University 24 Decouple anInvoker and aReceiver by aCommand Sample Code
Consequences 1902 25 口将调用操作的对象与知道如何实现该操作的对象解耦 Command是first class object。它们可像其它对象一样 被操纵和扩展 可将多个Command装配成一个复合Command,一般说 来,复合Command是Composite模式的一个实例 0 增加新的Command很容易,无需改变已有的类 口缺点:会导致某些系统有过多的具体命令类 Institute of Computer Software 2022-2-27 Nanjing University
Consequences 将调用操作的对象与知道如何实现该操作的对象解耦 Command是first class object。它们可像其它对象一样 被操纵和扩展 可将多个Command装配成一个复合Command,一般说 来,复合Command是Composite模式的一个实例 增加新的Command很容易,无需改变已有的类 缺点:会导致某些系统有过多的具体命令类 2022-2-27 Institute of Computer Software Nanjing University 25