举报投诉联系我们 手机版 热门标签 鳄鱼CMS
您的位置:鳄鱼CMS > java命令模式实现 Java 命令模式

java命令模式实现 Java 命令模式

2023-03-11 13:49 Java教程

java命令模式实现 Java 命令模式

java命令模式实现

Java命令模式是一种设计模式,它允许将请求封装成对象,以便可以使用不同的请求、队列或者日志来参数化其他对象。它也允许你支持可撤销的操作。

Java命令模式的核心是一个命令类,它包含执行请求所需的所有信息。这个类通常由三个部分组成:一个代表要执行的动作的 receiver 对象;一个 action 方法;和一个可选的 undo 方法。

public class Command { 

    private Receiver receiver; 

    public Command(Receiver receiver) { 
        this.receiver = receiver; 
    } 

    public void action() { 
        // 调用 Receiver 的功能来执行请求 
        receiver.action(); 
    } 

    public void undo() { 
        // 调用 Receiver 的功能来执行反向请求 
        receiver.undo(); 
    }  
}  

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

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

阅读全文
以上是鳄鱼CMS为你收集整理的java命令模式实现 Java 命令模式全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 鳄鱼CMS eyucms.com 版权所有 联系我们