Java设计模式--命令模式

命令模式也属于行为型模式,它将一个请求封装为一个对象,让用户使用不同的请求把客户端参数化。一般有三种角色:1、received 真正的命令执行对象 2、Command 各种命令3、invoker 使用命令对象的入口。

通过添加命令接口将请求者和执行者解耦。

简单实现:

命令接口:

public interface Command {
    void execute();
}

命令实际执行者:

public class Receiver {
    public void action1(){
        System.out.println("action1");
    }

    public void action2(){
        System.out.println("action2");
    }
}

定义各种实际命令

public class ConcreteCommand1 implements Command{
    private Receiver receiver;

    public ConcreteCommand1(Receiver receive){
        this.receiver = receive;
    }

    @Override
    public void execute() {
        receiver.action1();
    }
}

public class ConcreteCommand2 implements Command{
    private Receiver receiver;

    public ConcreteCommand2(Receiver receive){
        this.receiver = receive;
    }

    @Override
    public void execute() {
        receiver.action2();
    }
}

命令调用者

public class Invoker {
    private ArrayList<Command> list = new ArrayList<>();

    public void setCommand(Command command){
        list.add(command);
    }

    public void execute(){
        for (Command command : list)
            command.execute();
    }
}

测试类

    public static void main(String[] args) {
        Invoker invoker = new Invoker();
        Receiver receiver = new Receiver();
        invoker.setCommand(new ConcreteCommand1(receiver));
        invoker.setCommand(new ConcreteCommand2(receiver));
        invoker.setCommand(new ConcreteCommand1(receiver));
        invoker.execute();
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 定义 命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或者交易(Transaction)模式。 ...
    步积阅读 14,737评论 2 13
  • 前提 介绍这么模式之前,我们首先来看看它的类图。 根据这个图我们来分析一下何为命令模式。首先就是我们的 Clien...
    ghwaphon阅读 5,145评论 0 2
  • Java设计模式之命令模式 这期要分享的模式是命令模式,也是行为模式的一种。分享了这么多期的设计模式方面的内容,可...
    icyage阅读 838评论 0 0
  • 我笑了 笑在昨天的我 带我回昨天找昔日的我 带给我一臂之力 给昔日的我一记耳光 我笑了 只因昨天的我 是昔日人不曾...
    卡萨一布兰卡阅读 851评论 1 3
  • 主页:https://sentry.io/welcome/ 环境安装 请先安装 Docker 1.10+ ,使用 ...
    ihujian阅读 5,107评论 0 3