1.命令模式的宗旨就是不断的使用组合,调用者对象持有命令对象,命令对象持有真正的接受者对象,UML类图如下:
2.代码实现:
class Receiver(){
public void action(){
}
}
interface Command(){
public void execute();
}
class ConcreteCommand implements Command{
Receiver receiver;
public ConcreteCommand (Receiver receiver){
this.receiver = receiver;
}
@override
public void execute(){
receiver.action();
}
}
class Invoker{
Command command;
public Invoker(Command command){
this.command=command
}
public void action(){
command.execute();
}
}
(1)松耦合
(2)易扩展
4.使用场景:
命令模式,我们在日常的工作中或多或少的在不知不觉中都使用过这个模式了,如果有下列场景出现适合用命令模式:
(1)系统需要支持撤销功能的时候可以使用到命令模式。
(2)如果一个系统要求所有的数据都更新到日志里,等到系统崩溃的时候进行数据恢复(有点类似撤销功能)。