美文网首页
设计模式-命令模式

设计模式-命令模式

作者: 探索者_逗你玩儿 | 来源:发表于2018-10-30 22:31 被阅读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以实现命令的异步执行,大家可以自行尝试一下

    相关文章

      网友评论

          本文标题:设计模式-命令模式

          本文链接:https://www.haomeiwen.com/subject/tmyezftx.html