重庆企业品牌网站建设商店小程序

bicheng/2026/1/20 17:36:05/文章来源:
重庆企业品牌网站建设,商店小程序,网站开发前的准备工作,全国公共资源交易中心官网命令模式 一、原理与通俗理解二、项目开发日志功能三、Java源码中的命令模式四、总结优缺点以及使用经验 一、原理与通俗理解 命令模式将请求封装为一个命令对象,将发出请求的对象与执行请求的对象解耦。命令模式可以让你在不同时间点调用命令,将命令放入队列中,并实现对命令的… 命令模式 一、原理与通俗理解二、项目开发日志功能三、Java源码中的命令模式四、总结优缺点以及使用经验 一、原理与通俗理解 命令模式将请求封装为一个命令对象,将发出请求的对象与执行请求的对象解耦。命令模式可以让你在不同时间点调用命令,将命令放入队列中,并实现对命令的撤销和恢复操作。 比如在餐馆点餐,你(调用者)跟服务员(调用对象)说要来一份炒饭(命令),服务员就去通知厨师(执行对象)去炒一份炒饭。 二、项目开发日志功能 需求:记录日志并支持撤销操作 实现 定义命令接口Command定义执行命令、撤销命令方法LogCommand 类实现了具体的日志记录命令记录日志时备份当前日志并在撤销时恢复到备份的日志状态。LogCommandInvoker 类负责执行和管理命令执行命令时记录历史记录并且支持撤销操作。LogManager 类负责实际的日志记录操作包括记录日志、获取当前日志内容以及清空日志。 // 1. 定义命令接口 interface Command {void execute(); // 执行命令void undo(); // 撤销命令 }// 2. 实现具体的日志记录命令 class LogCommand implements Command {private LogManager logManager;private String logMessage;private String backupLog; // 用于撤销操作public LogCommand(LogManager logManager, String logMessage) {this.logManager logManager;this.logMessage logMessage;}Overridepublic void execute() {backupLog logManager.getLog(); // 备份当前日志logManager.log(logMessage); // 记录新日志}Overridepublic void undo() {logManager.clearLog(); // 清空当前日志logManager.log(backupLog); // 恢复到执行之前的日志} }// 3. 定义命令调用者 class LogCommandInvoker {private ListCommand commandHistory new ArrayList();public void executeCommand(Command command) {command.execute(); // 执行命令commandHistory.add(command); // 将命令添加到历史记录中}public void undoCommand() {if (!commandHistory.isEmpty()) {Command command commandHistory.remove(commandHistory.size() - 1); // 从历史记录中取出最后一个命令command.undo(); // 执行撤销操作}} }// 4. 定义命令执行者 class LogManager {private StringBuilder log new StringBuilder();public void log(String message) {log.append(message).append(\n); // 记录日志信息System.out.println(Logged: message);}public String getLog() {return log.toString(); // 获取当前日志内容}public void clearLog() {log new StringBuilder(); // 清空日志} } 使用: LogManager logManager new LogManager(); LogCommandInvoker invoker new LogCommandInvoker();// 记录日志 invoker.executeCommand(new LogCommand(logManager, Log message 1)); invoker.executeCommand(new LogCommand(logManager, Log message 2));// 撤销一条日志 invoker.undoCommand();// 再次记录日志 invoker.executeCommand(new LogCommand(logManager, Log message 3));三、Java源码中的命令模式 java.lang.Runnable Runnable接口允许将一个命令封装为一个可执行的对象,然后可以将该对象传递给线程执行。 Thread thread new Thread(new Runnable() {Overridepublic void run() {// 执行命令} }); thread.start();首先我们来看一下Runnable接口的定义这是一个简单的函数式接口只有一个抽象方法run()。 public interface Runnable {public abstract void run(); }现在我们创建一个类来实现Runnable接口 public class MyCommand implements Runnable {Overridepublic void run() {// 执行具体的任务System.out.println(Executing command);} }现在我们可以创建一个线程并将MyCommand对象作为参数传递给线程 public class Main {public static void main(String[] args) {MyCommand command new MyCommand();Thread thread new Thread(command);thread.start(); // 启动线程调用command的run()方法} }在上面的例子中MyCommand对象封装了需要被执行的任务并且通过将其作为参数传递给线程线程会调用其run()方法来执行具体的任务。这就是命令模式的应用将操作封装成对象并且能够在不同的上下文中执行这个命令。 因此通过实现Runnable接口并重写run()方法可以实现类似于命令模式的效果封装命令并且能够在不同的上下文中执行。 四、总结优缺点以及使用经验 优点: 低耦合,命令发送者和执行者完全解耦可以将命令存入队列,实现撤销/恢复操作命令对象可以携带额外的执行信息新增新命令非常方便,无需修改现有代码 缺点: 可能会导致系统有过多的具体命令类命令对象本身冗长 使用经验: 适用于需要将操作请求作为对象进行参数化传递的场景适用于需要支持命令队列、命令记录日志、撤销/恢复操作等功能的场景可以考虑使用组合模式组合多个命令形成复合命令在设计阶段就应该考虑是否需要支持撤销/恢复操作命令模式可以为不同对象的相同操作提供统一的接口在面向对象设计中,命令模式是常用的行为型设计模式 命令模式将请求与执行解耦,可以方便地扩展新的命令、实现命令队列和支持撤销/恢复操作等功能。在需要对操作进行参数化、队列化、日志记录、撤销/恢复等需求时,命令模式是一个不错的选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做网站的费用如何入账建设网站报告

该标准计算输入 logits 和目标之间的交叉熵损失。 代码实战 该损失函数结合了nn.LogSoftmax()和nn.NLLLoss()两个函数。它在做分类(具体几类)训练的时候是非常有用的。在训练过程中,对于每个类分配权值,可选的参数权值应该是一个…

东凤网站建设自己动手建立网站3

制作项目应用镜像 主要步骤: Step1、准备项目应用程序包 Step2、编写Dockerfile及启动脚本 Step3、docker build 构建镜像 Step4、docker run 启动容器 Step5、docker exec 进入容器进行验证 Step6、镜像的导入导出 Step7、提交容器生成新镜像 Step1、准备项目应…

最火的做网站源码语言软件开发工资一般多少深圳

0.背景 一个接口可能需要调用 N 个其他服务的接口,这在项目开发中还是挺常见的。举个例子:用户请求获取订单信息,可能需要调用用户信息、商品详情、物流信息、商品推荐等接口,最后再汇总数据统一返回。 如果是串行(按…

做网站的公司名称北京大型商场

微信群有500人上限的限制,建立多个群的话又有信息无法互通的不便,此机器人通过自动将消息转发到同一个同步组内的所有群,消除这一不便性,间接达成扩大群成员数的目的。 效果演示: 项目地址: https://gith…

深圳网站推广排名小游戏大全网页版

Redis 使用 Lua 脚本进行原子操作Intro之前写过一篇文章也是 Redis 使用 LUA 脚本实现分布式的 CAS 操作,可以参考:基于 Redis 实现 CAS 操作最近使用 Redis 的时候有一个需求,只有值发生变化的时候才更新,如果要更新的值和现在的…

青州做网站的电话制作网页时固定定位是最常用的定位模式

本期推出故障诊断全家桶,包含传统的分析时频诊断方法,依靠数据分解方法的诊断方法,依靠机器学习的诊断方法。还包含了6种适应度函数随意切换的VMD优化方法,16种数据分解方法,包络谱,包络熵等代码。以及作者…

女生wordpress网站适合泾川县住房和城乡建设局网站

1.在自己的项目JS文件夹中建文件:config.js、mssql.js和server.js以及api文件夹下的user.js 2.在config.js中封装数据库信息 let app {user: sa, //这里写你的数据库的用户名password: ,//这里写数据库的密码server: localhost,database: medicineSystem, // 数据…

网站建设技术员保密协议甘肃网站建设方案服务至上

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐IIFE 的基本语法⭐IIFE 的主要作用⭐如何使用 IIFE 来创建私有变量和模块封装⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅…

宿州城乡建设局网站律师网站建设建议

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 MPLS 基于标签转发表进行转发,与路由表类似,标签转发表有两种获取渠道:一是手动配置(类似静态路由),二是通过协议自动学习(类似OSPF)。手动配…

做普工招聘网站阿里云9元做网站

静态长效代理IP和动态短效代理IP是两种常见的代理IP类型,它们在用途和适用场景上存在一定的差异。了解它们的特性以及使用场景有助于我们更好地利用代理IP,提高网络访问的效率和安全性。 一、静态长效代理IP 1. 用途 静态长效代理IP是指长期保持稳定的代…

网站开发工程师待遇淄博网站建设的专业术语

ChatGPT 在论文写作与编程方面也具备强大的能力。无论是进行代码生成、错误调试还是解决编程难题,ChatGPT都能为您提供实用且高质量的建议和指导,提高编程效率和准确性。此外,ChatGPT是一位出色的合作伙伴,可以为您提供论文写作的…

网站怎么做微信支付宝支付汽车业务网站开发公司

UTF-8编码:打破字符编码的国界 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,让我们一同探讨编程世界中一项至关重要的技术——“UTF-…

动易网站模板免费做网站用什么写

来源:《2020 自动驾驶技术报告》进入 2020 年,自动驾驶技术的跨越式路线与渐进式路线之间的阵营划分已经十分明显。但最终自动驾驶要完全实现无人化,其技术还需要进行不断的迭代和发展。对于自动驾驶的技术进展,WEVOLVER 发布的《…

合肥外贸网站建设公司做ppt会去什么网站找图

首先,常量是一个字段,所以需要从字段中获取该值。 但是需要传入的BindingFlags是什么,与其盲猜,不如直接反射所有字段值,查看其中的常量有哪些特性和bool值来判断。 ...static void Main(string[] args){var type typ…

便宜网站建设成都谷歌网站推广费用

文章目录 1.项目内创建函数块(FB)2.项目内创建数据块(DB)2.1去除优化块访问2.2去除优化块的访问后对数据块进行编译 3.在函数块(FB)内实现正转反转的自锁与互锁3.1在函数块内实现电机正反转的梯形图 4.主函…

江门网站制作报价软件开发包括什么内容

来源 : 超级数学建模著名数学家丘成桐先生发表了题为“几何:从黎曼、爱因斯坦到弦论”的演讲,追溯了为广义相对论发展奠定基础的的黎曼几何,回顾了影响广义相对论发展的物理学突破,并谈及量子力学和引力理论相结合、引…

python做网站用什么长春建站网站建设

【7.1】目录与路径 【7.1.2】目录相关操作1)特殊目录列表:(1)2)目录操作命令,底下我们就来谈一谈几个常见的处理目录的命令吧:cd:变换目录pwd:显示目前的目录mkdir:创建一个新的目录…

网站首页自动下拉广告淄博网站制作设计公司

Pdoc:生成优雅Python API文档的工具 在开发Python项目时,文档是至关重要的。它不仅提供了对代码功能和用法的了解,还为其他开发人员提供了参考和使用的便利。Pdoc是一个流行的文档生成工具,专为生成Python API文档而设计。本文将介…

营销网站规划的要点包括( )织梦网站程序模板

订单履约系统的概念模型 订单:客户提交购物请求后,生成的买卖合同,通常包含客户信息、下单日期、所购买的商品或服务明细、价格、数量、收货地址以及支付方式等详细信息。 子订单:为了更高效地进行履约,大订单可能会被…

新农村建设管理网站株洲荷塘区

#204. 鸡兔同笼[2] 题目描述 一个笼子里面关了鸡和兔子(鸡有 2 只脚,兔子有 4 只脚,没有例外)。 已经知道了笼子里面脚的总数 a,问笼子里面至少有多少只动物,至多有多少只动物。 输入格式 一行&#x…