首页 > 其他分享 >11.15

11.15

时间:2024-11-13 23:19:19浏览次数:1  
标签:form int 11.15 value command undo public

 

 

实验16:命令模式

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

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

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

 

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

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

实验要求:

1、类图

 

 

2、源代码

①、Adder.java

package org.example.shiyanshiliu;

public class Adder {
    private int num=0;
    public int add(int value){
        num+=value;
        return num;
    }
}

 

②、AddCommand.java

package org.example.shiyanshiliu;

public class AddCommand 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);
    }
}

 

③、AbstractCommand.java

package org.example.shiyanshiliu;

public abstract class AbstractCommand {
    public abstract int execute(int value);
    public abstract int undo();
}

 

④、CalculatorForm.java

package org.example.shiyanshiliu;

public class CalculatorForm {
    private AbstractCommand command;
    public void setCommand(AbstractCommand command){
        this.command=command;
    }
    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);
    }
}

 

⑤、Client.java

package org.example.shiyanshiliu;

public class Client {
    public static void main(String[] args) {
        CalculatorForm form=new CalculatorForm();
        AbstractCommand command;
        command=new AddCommand();
        form.setCommand(command);
        form.compute(3);
        form.compute(4);
        form.compute(5);
        form.undo();
        form.undo();
        form.undo();
    }
}

 

3、运行结果

 

 

标签:form,int,11.15,value,command,undo,public
From: https://www.cnblogs.com/zzqq1314/p/18545052

相关文章

  • laravel:访问es,索引和搜索(Laravel 11.15.0)
    一,安装需要的库1,包的地址:https://packagist.org/packages/elasticsearch/elasticsearch2,文档地址:https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/index.html3,用composer从命令行安装[lhdop@blogdignews]$composerrequireelasticsearch/ela......
  • 11.15
    距离NOIP还有两天,可能高二压力比较大吧......
  • 11.15
    语法说明如下:1)过程名存储过程的名称,默认在当前数据库中创建。若需要在特定数据库中创建存储过程,则要在名称前面加上数据库的名称,即db_name.sp_name。需要注意的是,名称应当尽量避免选取与MySQL内置函数相同的名称,否则会发生错误。2)过程参数存储过程的参数列表。其中,<参数名......
  • 11.15
    今日学习内容<%--CreatedbyIntelliJIDEA.TochangethistemplateuseFile|Settings|FileTemplates.--%><%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>修改</title......
  • 11.15链表逆置
     structListNode*reverse(structListNode*head){structListNode*L=(structListNode*)malloc(sizeof(structListNode)),*p,*q;L->next=NULL;p=head;//中间量while(p){q=(structListNode*)malloc(sizeof(structListNode));......
  • 11.15 监控目录文件变化
    监视对指定目录的更改,并将有关更改的信息打印到控制台,该功能的实现不仅可以在内核层,在应用层同样可以。程序中使用ReadDirectoryChangesW函数来监视目录中的更改,并使用FILE_NOTIFY_INFORMATION结构来获取有关更改的信息。ReadDirectoryChangesW是Windows操作系统提供的一个函数,......
  • 11.15每日总结2
    子组件使用this.$emit()向父组件传值首先必须在父组件中引用子组件,然后实现传值第一步在父组件中引入子组件使用import引入组件importindexImportOrderfrom'./components/indexImportOrder'声明//定义组件components:{indexImportOrder,},使用<indexI......
  • 2023.11.15——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.mybatis明日计划:学习......
  • 11.15白盘黄金原油多空都已入袋,黄金晚间1973空单继续持有
    ......
  • 11.15
    【尚硅谷全新JavaWeb教程,企业主流javaweb技术栈】https://www.bilibili.com/video/BV1UN411x7xe/?p=121&share_source=copy_web&vd_source=ac9c07c50bbae3e2def2418eeed5473d 学到了p121,前端工程化之前了。先缓几天。这周把反射的知识学完吧。......