家教网站建设沈阳网站建设策划方案

pingmian/2026/1/22 21:16:58/文章来源:
家教网站建设,沈阳网站建设策划方案,wwe中文官网站,wordpress调用插件我们都熟悉电视遥控器#xff0c;它有许多按钮#xff0c;每个按钮都有确定的功能。你按下电源键电视就会打开#xff0c;再按下一次电视就会关闭。编程世界里也有这种模式#xff0c;这就是我们说的命令模式。 命令模式是一种设计模式#xff0c;它把一个请求或操作封装…我们都熟悉电视遥控器它有许多按钮每个按钮都有确定的功能。你按下电源键电视就会打开再按下一次电视就会关闭。编程世界里也有这种模式这就是我们说的命令模式。 命令模式是一种设计模式它把一个请求或操作封装到一个对象中。这意味着命令模式允许我们将操作分开我们可以控制何时和如何执行它们。 遥控你的代码命令模式的编程实战 了解命令模式的最好方式就是通过代码来看看它如何运作。 假设我们要制作一个游戏模拟器运行器可以执行两个命令启动和关闭。 // 游戏模拟器操作接口 interface Command {void execute(); }class GameConsole {public void start_game() {System.out.println(游戏开启!);}public void stop_game() {System.out.println(游戏关闭!);} }// 启动命令 class StartCommand implements Command {GameConsole console;public StartCommand(GameConsole console) {this.console console;}public void execute() {console.start_game();} }// 停止命令 class StopCommand implements Command {GameConsole console;public StopCommand(GameConsole console) {this.console console;}public void execute() {console.stop_game();} }// 游戏模拟器 class GameSimulator {HashMapString, Command commands new HashMap();public void register(String cmd_name, Command command) {commands.put(cmd_name, command);}public void execute(String cmd_name) {if (commands.containsKey(cmd_name)) {Command command commands.get(cmd_name);command.execute();} else {System.out.println(Unknown command!);}} }public class Main {public static void main(String[] args) {GameSimulator simulator new GameSimulator();GameConsole console new GameConsole();simulator.register(START, new StartCommand(console));simulator.register(STOP, new StopCommand(console));simulator.execute(START);simulator.execute(STOP);} }在上面的Java代码中我们创建了一个游戏模拟器它可以执行两种命令启动和停止。我们使用了接口来定义Command它只有一个execute方法。然后我们创建了两个Command的实现类即启动命令StartCommand和停止命令StopCommand。 命令模式如何实现撤销/恢复 撤销和恢复的操作是通过以下两步实现的 每次执行命令时将该命令对象存储在历史记录列表中如stack 。撤销操作其实就是从历史记录中取出最近的命令并执行它的反操作。如果该命令对象中包含了执行前对象的状态信息则撤销操作可以通过恢复这些状态来实现。 让我们来看一个Java代码例子这个例子展示了如何使用命令模式实现撤销功能 interface Command {void execute();void undo(); }class AddTextCommand implements Command {private String textToAdd;private TextEditor editor;public AddTextCommand(String textToAdd, TextEditor editor) {this.textToAdd textToAdd;this.editor editor;}public void execute() {editor.addText(textToAdd);}public void undo() {editor.removeText(textToAdd);} }class TextEditor {private StringBuilder text new StringBuilder();public void addText(String textToAdd) {text.append(textToAdd);}public void removeText(String textToRemove) {int index text.lastIndexOf(textToRemove);if (index ! -1) {text.delete(index, index textToRemove.length());}}public void printText() {System.out.println(text.toString());} }class TextEditorDriver {private StackCommand commandHistory new Stack();public void executeCommand(Command cmd) {cmd.execute();commandHistory.push(cmd);}public void undoLastCommand() {if (!commandHistory.isEmpty()) {Command lastCmd commandHistory.pop();lastCmd.undo();}} }在这段代码中我们首先定义了一个Command接口并添加了一个新的方法undo。我们的每个具体命令都必须定义这两个方法。 在TextEditorDriver类中我们维护了一个命令历史stack。每次执行命令时我们都将命令添加到这个stack中。当我们要撤销操作时我们只需取出最新的命令并调用它的undo方法。 在命令模式中撤销和恢复功能的实现核心是在每个具体的命令中都保存了足够的信息以便在需要时可以反转其效果。通过使用存储的命令历史我们不仅可以撤销命令还可以重做它们。 命令模式的深入理解 以上的小例子虽然简单但是已经显示了命令模式的三大优点 解耦调用者与接收者命令模式可以解耐调用者和接收者之间的耦合将一个请求封装为一个对象使发出请求的责任和执行请求的责任分割开。命令可扩展你可以增加新的命令而完全不改变现有的代码。支持撤销、队列、宏命令等命令模式的另一个优点就是可以后期扩展新的特性。比如可以添加命令历史来实现撤销和恢复等功能或者搭建任务队列进行后台处理等。 命令模式是创建型和行为型设计模式的交织使用它你就可以变得像使用遥控器一样自由自在地控制你的代码。 命令模式是创建型和行为型设计模式的交织怎么理解 我们之前提到命令模式是创建型和行为型设计模式的交织。那么这句话是怎么理解的呢 设计模式通常被分为三种类型创建型结构型和行为型。 创建型模式这类模式主要处理对象创建机制尝试在创建对象的过程中增加更多的灵活性和效率。简单工厂、抽象工厂、建造者、原型、单例等都是创建型模式。结构型模式这类模式主要关注对象组合或者换句话说实体之间如何互相使用。这些模式能保证系统中各部分之间相互关系的清晰地定义。适配器、桥接、组合、装饰、外观、享元、代理等都是结构型模式。行为型模式这类模式专注于对象间的通信它们的主要目的是增强对象间的通信以及如何控制复杂系统中多个对象的协作。策略、模板方法、观察者、迭代器、责任链、命令、备忘录、状态、访问者等都是行为型模式。 命令模式是一个行为型模式因为它解决的主要问题是将行为请求者和接收者进行解耦实现请求的封装。这让请求者不必知道接收者的接口也不必知道请求是怎么被接收的以及操作是否被执行、是如何执行的等等。 不过命令模式也涉及创建型模式的一些特性它涉及到具体命令类的创建以及如何和特定接收者实例相关联。每个具体的命令类都封装了特定的行为和调用接收者的相应方法。这样每个命令可以看作是一个完整的操作。 因此命令模式是创建型模式和行为型模式的交织。它是创建型的因为它创建了具有特定行为的命令对象。同时它是行为型的因为这些对象被调用来执行特定的行为。 总结 理解和从实际角度看待设计模式非常重要因为它们是我们进行有效编程和设计灵活可维护系统的工具。希望这次的讨论能帮助你更好地理解命令模式明白它是如何综合创建型模式和行为型模式的。 当然设计模式并不是银弹应当根据具体场景和需求采取合适的设计模式。而这个能力则需要大量实践和经验的积累加油 如果上面的内容对你有帮助请点赞收藏哦我会分享更多的经验~

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

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

相关文章

个人域名可以做企业网站吗信阳新网站做seo优化

forEach、filter、map都可以遍历数组,那么三者有什么区别? 区别: forEach遍历数组全部元素,利用回调函数对数组进行操作,不会返回新的数组,return只用于控制循环是否跳出当前循环; filter返回一个新的数组&#xff0…

企业网站建设上市公司WordPress评论加入ip

dhtmlxScheduler是一个类似于Google日历的JavaScript日程安排控件,日历事件通过Ajax动态加载,支持通过拖放功能调整事件日期和时间,事件可以按天,周,月三个种视图显示。 DHTMLX Scheduler正式版下载 在本教程中&…

宁波网站建设流程有哪些wordpress做相册

目录 思路 框架​编辑 读取操作 数据操作 绘制画面 游戏的数据结构 用二维数组来模拟棋盘格 赢的情况 平局情况 Code 代码细节部分 (1)初始化棋盘格 (2) 初始化棋子类型​编辑 事件处理部分 落子 框架内代码的完善 数据处…

合肥企业网站建设工作室西安优秀的集团门户网站建设服务商

目录 题目部分 解析与思路 代码实现 题目部分 题目TLV编码题目说明TLV编码是按[Tag Length Value]格式进行编码的,一段码流中的信元用Tag标识,Tag在码流中唯一不重复,Length表示信元Value的长度,Value表示信元的值。 码流以某…

phton可以做网站吗微软雅黑做网站是否侵权

目录 一、前言 二、hive 运算符分类 三、hive 运算符操作演示 3.1 数据准备 创建表dual 加载一个文件dual.txt到dual表中 模拟测试 3.2 关系运算符 is null空值判断 is not null 非空值判断 like使用 3.3 算术运算符 取整操作 取余操作: % 位与操作: & …

零六年自助建设网站android应用商店

1、原因:kafka是一个去中心化结果的,所以在启动Kafka的时候,每一个节点上都需要启动。 启动的命令:kafka-server-start.sh -daemon /usr/local/soft/kafka_2.11-1.0.0/config/server.properties

有经验的武进网站建设大众点评如何做团购网站

动画是使元素从一种样式逐渐变化为另外一种效果,CSS3动画的生成,主要依赖keyframes定义动画,animation执行动画。 keyframes 通过 keyframes 规则创建动画。 keyframes keyframes-name {keyframes-selector {css-styles;}}keyframes-name 帧…

建设银行网站在哪里修改支付密码清理wordpress模板

Modbus协议在应用中一般用来与PLC或者其他硬件设备通讯,Modbus集成到IoTBrowser使用串口插件模式开发,不同的是采用命令函数,具体可以参考前面几篇文章。目前示例实现了Modbus-Rtu和Modbus-Tcp两种,通过js可以与Modbus进行通讯控制…

买链接网站做ppt音乐模板下载网站

YOLO介绍 YOLO,全称为You Only Look Once: Unified, Real-Time Object Detection,是一种实时目标检测算法。目标检测是计算机视觉领域的一个重要任务,它不仅需要识别图像中的物体类别,还需要确定它们的位置。与分类任务只关注对…

动态门户网站建设价格网站后台管理系统一般用户名是什么

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 90nm 及以下的工艺都要求储存器,IP,IO 的多晶硅方向必须和标准单元的多晶 硅方向保持一致,无法像过去工艺一样随意旋转方向。在 22nm 及以下…

服饰类网站模板网站框架都有什么用

一、选择题 1.组成数据的基本单位是()。 A. 数据项 B.数据类型 C.数据元素 D.数据变量 2.设数据结构A{D,R},其中D&#xff5b;1,2,3,4},R{r},r{<1,2>,<2,3>,< 3,4>,<4,1>}&#xff0c;则数据结构A是()。 A.线性结构 B.树型结构 C.图型结构 D.集合 3.…

温州高端企业网站建设电子商务营销师

1.什么是微服务? 微服务(Microservices)是一种软件架构风格,将一个大型应用程序划分为一组小型、自治且松耦合的服务。每个微服务负责执行特定的业务功能,并通过轻量级通信机制(如HTTP)相互协作。每个微服务可以独立开发、部署和扩展,使得应用程序更加灵活、可伸缩和可…

福田网站建设设计公司深圳市富通建设工程有限公司网站

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你两个长度为nnn的串a,ba,ba,b&#xff0c;每次可以同时翻转a,ba,ba,b中任意一段长度为L(1≤L≤n)L(1\le L\le n)L(1≤L≤n)的子串&#xff0c;问能否通过若干次操作使两个串相同。 思路&#xff1a; 首…

网站开发如何搭建框架如何建设网站使用

QuestMobile2020数据显示&#xff0c;疫情发生以来&#xff0c;每个网民每天花在移动互联网的时长比年初增加了21.5%&#xff0c;对于视频类应用增长尤为突出。而短视频用户规模已超8.5亿&#xff0c;用户使用时长在移动互联网用户使用总时长占比已达10.5%&#xff0c;仅次于社…

河北网站设计成功柚米科技深圳自己做网站 服务器

图解taxize 1. taxize分解思路1.1 图解说明 2. 针对不同数据库的函数组2.1 APGⅢ2.2 BOLD&#xff08;barcode of life data system&#xff09; 1. taxize分解思路 taxize可以帮助人们从许多数据库中获取信息。 由于要处理的数据库很多&#xff0c;导致taxize包含的功能函数…

网站建设费用 计入什么科目建筑工程网免费下载

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

邯郸做网站电话青岛网站搭建公司

一 ORACLE数据库特点: 支持多用户&#xff0c;大事务量的事务处理数据安全性和完整性控制支持分布式数据处理可移植性(跨平台&#xff0c;linux转Windows) 二 ORACLE体系结构 数据库&#xff1a;oracle是一个全局数据库&#xff0c;一个数据库可以有多个实例&#xff0c;每个…

网站建设管理费一能多少钱一个专门做特产的网站

LLM 的局限性 知识时效性受限: 如何让LLM能够获取最新的知识 专业能力有限: 如何打造垂域大模型 定制化成本高: 如何打造个人专属的LLM应用 RAG:检索增强生成&#xff0c; 核心思想&#xff1a;给大模型外挂一个知识库&#xff0c;对于用户的提问&#xff0c;会首先从知识库中…

入侵WordPress网站手机图片生成网页链接

安全等于<> 最大最小LEAST,GREATEST BETWEEN AND 条件一是下限 IN LIKE关键字 转移字符 逻辑运算符 位运算符 排序数据 升序降序&#xff0c;默认升序 二级排序 8.0新特性 小拓展 多表查询 多表查询 别名 多表查询的分类 非等值连接 自连接 内连接与外连接 sql92实现外连…

上海网站建设官方网站ps网站建设教程视频

什么是SNMP SNMP&#xff0c;称为简单网络管理协议&#xff0c;被发现可以解决具有复杂网络设备的复杂网络环境&#xff0c;SNMP 使用标准化协议来查询网络上的设备&#xff0c;为网络管理员提供保持网络环境稳定和远离停机所需的重要信息。 为什么要在思科设备中启用SNMP S…