首页 > 其他分享 >命令模式

命令模式

时间:2023-11-20 10:11:39浏览次数:28  
标签:undo form int value 命令 command 模式 public

实验16:命令模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 

1、理解命令模式的动机,掌握该模式的结构;

2、能够利用命令模式解决实际问题。

 

[实验任务一]:多次撤销和重复的命令模式

某系统需要提供一个命令集合(注:可以使用链表,栈等集合对象实现),用于存储一系列命令对象,并通过该命令集合实现多次undo()和redo()操作,可以使用加法运算来模拟实现。

实验要求:

1. 提交类图;

 

 

 

2. 提交源代码;

 

package src;

 

public abstract class AbstractCommand {    

  public abstract int execute(int value); //声明命令执行方法execute()    

  public abstract int undo(); //声明撤销方法undo()    

}    

package src;

 

public class Adder {    

  private int num=0; //定义初始值为0    

      

 

  public int add(int value) {    

      num += value;    

      return num;    

  }    

}    

package src;

 

public class CalculatorForm {    

    private AbstractCommand command;    

        

    public void setCommand(AbstractCommand command) {    

        this.command = command;    

    }    

        

    //调用命令对象的execute()方法执行运算    

    public void compute(int value) {    

        int i = command.execute(value);    

        System.out.println("执行结果为" + i);    

    }    

        

  

    public void undo() {    

        int i = command.undo();    

        System.out.println("撤销:" + i);    

    }    

}  

package src;

 

public class Client {    

    public static void main(String args[]) {    

        CalculatorForm form = new CalculatorForm();    

        AbstractCommand command;    

        command = new ConcreteCommand();    

        form.setCommand(command);  

            

        form.compute(3);    

        form.compute(4);    

        form.compute(5);    

        form.undo();  

        form.undo();

        form.undo();

    }    

}    

package src;

 

class ConcreteCommand extends AbstractCommand {    

  private Adder adder = new Adder();    

  private int value;  

 

  public int execute(int value) {    

          this.value=value;    

          return adder.add(value);    

      }    

          

    

      public int undo() {    

          return adder.add(-value);    

      }    

  }    

 

3. 注意编程规范。

 

 

标签:undo,form,int,value,命令,command,模式,public
From: https://www.cnblogs.com/yvxiaoshuai/p/17843333.html

相关文章

  • 每日随笔——外观模式
    实验任务一]:计算机开启在计算机主机(Mainframe)中,只需要按下主机的开机按钮(on()),即可调用其他硬件设备和软件的启动方法,如内存(Memory)的自检(check())、CPU的运行(run())、硬盘(HardDisk)的读取(read())、操作系统(OS)的载入(load()),如果某一过程发生错误则计算机启动失败。......
  • Linux常用命令记录
    Linux常用命令记录文件与目录管理命令Linux的文件目录是树状结构,最顶级的目录为根目录/,其他目录是通过挂载将其添加到文件树上,通过解除挂载将其移除。首先先了解什么是绝对路径和相对路径绝对路径:从根目录开始的完整路径描述,通常以/开头,从根目录root一直到目标目录相对......
  • 常用的小命令
    hexdumphexdump-n10-Cwancc-s20#从第20行开始,打印10行、#一般是搜索一下里面的时间hexdump-Cv/dev/mtd0-s0x0001a600-n640#C表示16进制,v表示重复不折叠,s表示源,n表示字节数常用软件vscode操作小技巧=.*#正则表达式匹配ctrl+alt+上下箭头#批量修改linux......
  • 实验18:迭代器模式
    软件设计                 石家庄铁道大学信息学院 实验18:迭代器模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解迭代器模式的动机,掌握该模式的结构;2、能够利用迭代器模式解决实际问题。 [实验任务一]:JAVA和C++常见数据结构迭代器......
  • Netty源码学习4——服务端是处理新连接的&netty的reactor模式
    系列文章目录和关于我零丶引入在前面的源码学习中,梳理了服务端的启动,以及NioEventLoop事件循环的工作流程,并了解了Netty处理网络io重要的Channel,ChannelHandler,ChannelPipeline。这一篇将学习服务端是如何构建新的连接。一丶网络包接收流程当客户端发送的网络数据帧通过网......
  • 【Python进阶】近200页md文档14大体系知识点,第4篇:linux命令和vim使用
    本文从14大模块展示了python高级用的应用。分别有Linux命令,多任务编程、网络编程、Http协议和静态Web编程、html+css、JavaScript、jQuery、MySql数据库的各种用法、python的闭包和装饰器、mini-web框架、正则表达式等相关文章的详细讲述。全套Python进阶笔记地址:请移步这里共......
  • cmd常用命令(十)nslookup
    nslookup查看默认dnsC:\Users\admin>nslookup默认服务器:UnKnownAddress:192.168.51.51nslookup-debug8.8.8.8C:\Users\admin>nslookup-debug8.8.8.8------------Gotanswer:HEADER:opcode=QUERY,id=1,rcode=NXDOMAINheaderflag......
  • 常用木马和提权命令
    作用是在Python中创建一个伪终端(pty),并在其中启动一个bashshell。这样,你可以在Python脚本中执行bash命令,就像在终端中一样。python-c'importpty;pty.spawn("/bin/bash")'一句话木马:<?php@eval($_REQUEST[ckl])?><?php@eval($_POST['ckl']);?>在PHP中,$_POST是一个包含......
  • ng config -g cli.packageManager npm 命令行的使用
    ngconfig-gcli.packageManagernpm这条命令是在AngularCLI环境下执行的,它的主要目的是全局设置AngularCLI使用的包管理器。这里,-g代表全局设置,cli.packageManager是你要配置的属性,npm是你要设置的值。这条命令将会把AngularCLI的包管理器设置为npm,这意味着在你使......
  • mongoDB命令行交互
    命令行交互命令行交互一般是学习数据库的第一步,不过这些命令在后续用的比较少,了解即可。角色命令创建角色useadmindb.createUser({"user":"root","pwd":passwordPrompt(),"roles":[{role:"role",db:"<database>"}|"root"]})校验......