命令模式

Posted blogofjzq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了命令模式相关的知识,希望对你有一定的参考价值。

命令模式把请求操作的对象和执行操作的对象解耦。

技术分享图片

代码如下:

先写命令真正的执行者

public class Receiver {
    public void extA()
    {
        System.out.println("Command excA!!");
    }
    public void extB()
    {
        System.out.println("Command excB!!");
    }
}

再写对命令的抽象

public abstract class Command {
    public Receiver rec=null;
    public void setRec(Receiver rec) 
    {
        this.rec=rec;
    }
    public abstract void exc();
}
public class CommandImpA extends Command {
    public void exc() {
        rec.extA();
    }
}
public class CommandImpB extends Command{
    public void exc() {
        rec.extB();
    }
}

然后是请求操作命令的类

public class Invoker {
    private ArrayList<Command> cmdList=new ArrayList<Command>();
    public void setCommand(Command cmd)
    {
        this.cmdList.add(cmd);
    }
    public void exc()
    {
        for(Command cmd:cmdList)
        {
            cmd.exc();
        }
    }
}

最后写一个测试

public static void main(String[] args) {
        Command cmdA=new CommandImpA();
        Command cmdB=new CommandImpB();
        cmdA.setRec(new Receiver());
        cmdB.setRec(new Receiver());
        Invoker ivk=new Invoker();
        ivk.setCommand(cmdA);
        ivk.setCommand(cmdB);
        ivk.setCommand(cmdB);
        ivk.setCommand(cmdA);
        ivk.setCommand(cmdA);
        ivk.setCommand(cmdA);
        ivk.exc();
    }

 

以上是关于命令模式的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——git命令操作一个完整流程

用于从 cloudkit 检索单列的代码模式/片段

VSCode自定义代码片段——cli的终端命令大全

VSCode自定义代码片段4——cli的终端命令大全

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程