命令模式

来源:互联网 发布:辛普森有没有杀妻 知乎 编辑:程序博客网 时间:2024/06/11 07:50

1 问题

请求者不希望或无法直接和被请求者打交道,即请求者不希望或者无法含有被请求者的引用。

2 解决方法

命令模式解决一个对象请求另一个对象调用其方法来完成某种任务。

3 模式的核心

将“请求”封装在“命令”对象的一个方法中。

4 模式的结构

命令模式由4种角色构成,角色之间的关系如下图所示:


  • Command:命令接口,封装“请求”的若干方法。
  • Receiver:接受者,执行请求相关的操作。
  • ConcreteCommand:具体命令,实现命令接口并拥有接受者属性。
  • Invoker:请求者,拥有命令接口变量的实例对象,负责调用具体的命令。

5 宏命令

宏命令是一个包含了其他具体命令引用的一个具体命令,如图所示:

6 命名模式的优点

  • 请求者与接受者之间没有直接交互,解除彼此之间的耦合。
  • 满足“开-闭原则”。新增具体命令和接收者,不需要修改调用者;新增调用者,不需要修改具体命令和接收者。
  • 命令对象可以将具体命令持久化。
  • 命令对象可以对请求命令进行排队。

7 使用场景

  • 需要在不同的时刻指定、排列和执行请求
  • 需要提供撤销操作
  • 需要支持宏操作

8 见解

  • Invoker中使用Command的接口声明命令,满足面对抽象原则。

9 Demo

1 0
原创粉丝点击