命令模式:将一个请求封装成一个对象,使得可用不同请求对客户参数化,对请求排队或记录请求日志,得以支持撤销操作。也称为transaction事务模式。
如,局长对底下众多办事员直接下达命令,沟通,这是很繁琐的。如果局长对处长发命令,由处长对众多下属发命令,这是比较方便的。
应用场景:sql事务等。
代码演示:
1.命令执行对象
public class Receiver {
public void action(){
System.out.println("Receiver.action()");
}
}
2.抽象命令类和具体命令类:
public interface Commend {
/**
* 根据需求设计多个不同的方法
*/
void execute();
}
class ConcreteCommend implements Commend{
private Receiver receiver;
public ConcreteCommend(Receiver receiver) {
this.receiver = receiver;
}
@Override
public void execute() {
//命令执行前处理
receiver.action();
//命令执行后处理
}
}
3.命令发送者对象:
public class Invoke {
/**
* 可以使用List<Commend>批处理命令
*/
private Commend commend;
public Invoke(Commend commend) {
this.commend = commend;
}
/**
* 用于调用命令类的方法
*/
public void call(){
commend.execute();
}
}
4.测试:
public static void main(String[] args) {
Commend c=new ConcreteCommend(new Receiver());
Invoke invoke=new Invoke(c);
invoke.call();
}
结果:
Receiver.action()