命令模式:
定义:
将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。
通用类图:
Receiver接受者角色:
该角色就是干活的角色,命令传递到这里是应该被执行的
Command命令角色
需要执行的所有命令都在这里声明
Invoker调用者角色
接收到命令并执行命令。
优缺点:
优点:
类间解耦
调用者角色与接受者角色之间没有任何依赖关系,调用者实现功能时只需要调用Command抽象类的execute方法就可以,不需要了解到底是哪个接受者执行
可扩展性
Command的子类可以非常容易的扩展,而调用者Invoker和高层次的Client不产生严重的代码耦合
命令模式结合其他模式会更优秀
命令模式可以结合责任链模式,实现命令族解析任务;结合模板方法模式,则可以减少Command子类的膨胀问题。
缺点:
如果有N个命令,Command的子类就是N个