设计模式-命令模式
2018-10-30 本文已影响0人
探索者_逗你玩儿
命令模式:将请求封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象,命令模式也支持撤销操作
命令模式好比行军打仗,将军发号施令,不同的行军队伍根据指令做不同的行动以配合整场战役。首先我们来定义指令,好让队伍明白什么样的指令是将军发送的。指令只是接口,不同的指令根据不同的作用自行定制。
/**
* Created by apple on 2018/10/19.
*/
public interface Command<T,V> {
public void execute(T t);
public void cancel();
}
接下来我们定义一个行军的指令
/**
* Created by apple on 2018/10/30.
*/
public class MarchCommand implements Command<Army> {
private Army army;
@Override
public void execute(Army army) {
this.army = army;
army.go();
}
@Override
public void cancel() {
this.army.stop();
}
}
最后我们来看看队伍是如何响应整个命令的
/**
* Created by apple on 2018/10/30.
*/
public class General {
public static void main(String[] args){
Army army = new Army();
MarchCommand cmd = new MarchCommand();
cmd.execute(army);
cmd.cancel();
}
}
当然这只是一个最简单的命令,如果业务复杂可以根据业务需要进行组合命令,把多个命令组合起来实现更为复杂的功能从而满足业务的需要,命令模式还可以有多种变种,例如结合ComplebleFuture以实现命令的异步执行,大家可以自行尝试一下