设计模式——命令模式

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

二、UML示意图

 

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

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

三、优缺点

优点:

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

缺点:

  • 使用命令模式可能会导致某些系统有过多的具体命令类。
posted @ 2020-03-20 21:35  夜里寻星  阅读(91)  评论(0编辑  收藏  举报