命名模式定义如下:
命令模式是一个高内聚的模式,定义为:
Encapsulate a request as an object,thereby letting you parameterize clients with different request,queue or log requests ,and support undoable operations.
讲一个对象封装为一个请求,以便于使用不同的请求对客户端的进行参数化,对请求排队或者记录日志,并支持可撤销的操作。
通用类图如下:
各个角色定义如下:
1、Receiver:接收者角色,命令传递到这里,就是被该类执行的
2、Commond:命令角色,需要执行的命令都在这里声明,根据面向对象的规则,对现实世界中存在的事物进行抽象,在这里把把命令抽象成一个对象。
3、Invoker:调用者角色,接收到命令,并执行该命令。
命令角色是命令模式的核心。
命令模式的优点:
1、类间解耦:调用者和接受者进行解耦,没有任何的联系,调用者实现功能是只需要实现Command的抽象方法即可。
2、可扩展性:新增的命令只需要实现或者继承Command类即可。
命令模式的缺点:
1、命令非常多时,会使类的数量暴增