设计模式——命令模式

Posted winsons

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式——命令模式相关的知识,希望对你有一定的参考价值。

一、概念:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。

二、UML示意图

技术图片

 

 Command是一个命令抽象类,定义了Excute抽象方法,具体命令类持有一个接受者Receiver对象,并实现Excute方法根据不同的命令执行Receiver对象不同的方法。Invoker可以接受客户端发出的命令,并执行这个命令通知Receiver执行特定方法。

具体流程则是:客户端对Invoker发出命令,Invoker接受命令并执行这个命令,通知Receiver执行Operation方法。在这过程中根据需求甚至可以实现记录日志的功能,若想撤销命令也可以提供撤销命令的方法。

三、优缺点

优点:

  • 符合单一职责原则,Invoker、Client、Command、Receiver各自完成自己的工作。
  • 降低了耦合度。
  • 提供了扩展性。增加新的命令很简单,只需要增加新的具体命令类就可以了,不需要修改原代码,符合开闭原则。
  • 可以很方便的实现记录日志,命令撤销功能。

缺点:

  • 使用命令模式可能会导致某些系统有过多的具体命令类。

以上是关于设计模式——命令模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式:命令模式——命令模式扩展之队列请求

设计模式:命令模式——命令模式扩展之日志请求

vim模式与模式切换vim命令模式

设计模式----命令模式

设计模式(二十二)---命令模式

vi常用命令