第六十七节 Java设计模式 - 命令模式

Java设计模式 - 命令模式

命令模式是数据驱动设计模式它是行为模式之一。

请求被作为命令的对象包装传递给invoker对象。

Invoker对象将命令传递到相应的对象并且该对象执行该命令。

例子

复制代码
import java.util.ArrayList;
import java.util.List;

interface Command {
  void execute();
}

class MouseCursor {
  private int x = 10;
  private int y = 10;
  public void move() {
    System.out.println("Old Position:"+x +":"+y);
    x++;
    y++;
    System.out.println("New Position:"+x +":"+y);
    
  }

  public void reset() {
    System.out.println("reset");
    x = 10;
    y = 10;
  }
}

class MoveCursor implements Command {
  private MouseCursor abcStock;

  public MoveCursor(MouseCursor abcStock) {
    this.abcStock = abcStock;
  }

  public void execute() {
    abcStock.move();
  }
}

class ResetCursor implements Command {
  private MouseCursor abcStock;

  public ResetCursor(MouseCursor abcStock) {
    this.abcStock = abcStock;
  }

  public void execute() {
    abcStock.reset();
  }
}

class MouseCommands {
  private List<Command> orderList = new ArrayList<Command>();

  public void takeOrder(Command order) {
    orderList.add(order);
  }

  public void placeOrders() {
    for (Command order : orderList) {
      order.execute();
    }
    orderList.clear();
  }
}

public class Main {
  public static void main(String[] args) {
    MouseCursor cursor = new MouseCursor();

    MoveCursor moveCursor = new MoveCursor(cursor);
    ResetCursor resetCursor = new ResetCursor(cursor);

    MouseCommands commands= new MouseCommands();
    commands.takeOrder(moveCursor);
    commands.takeOrder(resetCursor);

    commands.placeOrders();
  }
}

上面的代码生成以下结果。

相关推荐
weixin_436525071 小时前
Gitee - IDEA 主支 master 和分支 dev 的使用
java·ide·intellij-idea
sheji34161 小时前
【开题答辩全过程】以 YF精品视频动漫平台为例,包含答辩的问题和答案
java·eclipse
渡我白衣2 小时前
C++ 异常处理全解析:从语法到设计哲学
开发语言·c++·面试
小蕾Java2 小时前
Java 开发工具,最新2025 IDEA 使用
java·ide·intellij-idea
是席木木啊2 小时前
Idea升级到2024版本:“marketplace plugins are not loaded”解决方案
java·ide·intellij-idea
胚芽鞘6812 小时前
博客标题:解密 IntelliJ IDEA 调试:当你的 List 不仅仅是 List
java·ide·intellij-idea
꒰ঌ 安卓开发໒꒱2 小时前
Java面试-并发面试(一)
java·jvm·面试
HezhezhiyuLe2 小时前
IDEA中Add New Configuration找不到Tomcat
java·ide·intellij-idea
青草地溪水旁2 小时前
设计模式(C++)详解——观察者模式(Observer)(1)
c++·观察者模式·设计模式
悦悦子a啊2 小时前
[Java]PTA: jmu-Java-02基本语法-08-ArrayList入门
java·开发语言·算法