设计模式-命令模式

命令模式:将请求封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象,命令模式也支持撤销操作
命令模式好比行军打仗,将军发号施令,不同的行军队伍根据指令做不同的行动以配合整场战役。首先我们来定义指令,好让队伍明白什么样的指令是将军发送的。指令只是接口,不同的指令根据不同的作用自行定制。


/**
 * Created by apple on 2018/10/19.
 */
public interface Command {

    public  void execute(T t);

    public void cancel();
}

接下来我们定义一个行军的指令

/**
 * Created by apple on 2018/10/30.
 */
public class MarchCommand implements Command {

    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以实现命令的异步执行,大家可以自行尝试一下

你可能感兴趣的:(设计模式-命令模式)