命令模式Command Pattern

定义

命令模式(Command Pattern)是对命令的封装,每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式解耦了请求方和接收方,请求方只需请求执行命令,不用关心命令是怎样被接收,怎样被操作以及是否被执行...等。
本质:解耦命令请求与处理。
属于行为型模式。

适用场景

  1. 现实语义中具备“命令”的操作(如命令菜单,shell命令...)。
  2. 请求调用者和请求的接收者需要解耦,使得调用者和接收者不直接交互。
  3. 需要抽象出等待执行的行为,比如撤销(Undo)操作和恢复(Redo)等操作。
  4. 需要支持命令宏(即命令组合操作)。

举例

  1. JDK Runnable
  2. JUnit Test
  3. 系统控制台cmd

优点

  1. 通过引入中间件(抽象接口),解耦了命令请求与实现。
  2. 扩展性良好,可以很容易地增加新命令。
  3. 支持组合命令,支持命令队列。
  4. 可以在现有命令的基础上,增加额外功能(比如日志记录...,结合装饰器模式更佳)。

缺点

  1. 具体命令类可能过多。
  2. 增加了程序的复杂性,理解更加困难。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。