zoukankan      html  css  js  c++  java
  • 命令模式

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

    代码如下:

    先写命令真正的执行者

    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();
        }
  • 相关阅读:
    vue-修改vue项目运行端口号
    任正非521央视采访全文
    是施压还是真的决裂?
    贸易战风波继续
    华为对封杀的态度和格局
    美国封锁对华为的影响
    布鲁克斯法则 (Brooks's Law)
    2019第20周日
    如何让自己走的更远
    如何应对中年危机
  • 原文地址:https://www.cnblogs.com/blogofjzq/p/9473764.html
Copyright © 2011-2022 走看看