首页 > 其他 > 详细

命令模式

时间:2018-08-14 12:59:08      阅读:179      评论:0      收藏:0      [点我收藏+]

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

技术分享图片

代码如下:

先写命令真正的执行者

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();
    }

 

命令模式

原文:https://www.cnblogs.com/blogofjzq/p/9473764.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!