定义
命令模式:是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
命令模式通常有以下三种角色构成:
● Receive接收者角色
该角色就是干活的角色,命令传递到这里是应该被执行的。
● Command命令角色
需要执行的所有命令都在这里声明。
● Invoker调用者角色
接收到命令,并执行命令
案例
/**
* 抽象接收者角色,负责执行一定的逻辑任务
*/
public abstract class Receiver {
public abstract void doSomething();
}
/**
* 坐下动作接收者
*/
public class SitReceiver extends Receiver {
@Override
public void doSomething() {
System.out.println("坐下...");
}
}
/**
* 站起来动作接收者
*/
public class StandReceiver extends Receiver {
@Override
public void doSomething() {
System.out.println("站起来...");
}
}
/**
* 抽象命令角色,表示一个命令对象
*/
public abstract class Command {
protected Receiver receiver;
public Command(Receiver receiver) {
this.receiver = receiver;
}
public abstract void action();
}
/**
* 坐下命令对象
*/
public class SitCommand extends Command {
public SitCommand(Receiver receiver) {
super(receiver);
}
@Override
public void action() {
receiver.doSomething();
}
}
/**
* 站起来命令对象
*/
public class StandCommand extends Command {
public StandCommand(Receiver receiver) {
super(receiver);
}
@Override
public void action() {
receiver.doSomething();
}
}
命令模式主要是将命令封装成一个对象,再将命令对象以单个或列表的形式传递给执行者Invoker,执行者负责执行所有的命令。命令模式降低了系统耦合度,同时,新的命令可以很容易添加到系统中去。