当前位置: 首页 > news >正文

电脑做服务器建网站app试玩网站制作

电脑做服务器建网站,app试玩网站制作,产品互联网做推广做什么网站好,零基础学做网页命令设计模式 🚩什么是命令设计模式?🚩命令设计模式的特点🚩命令设计模式的结构🚩命令设计模式的优缺点🚩命令设计模式的Java实现🚩代码总结🚩总结 🚩什么是命令设计模式…

命令设计模式

  • 🚩什么是命令设计模式?
  • 🚩命令设计模式的特点
  • 🚩命令设计模式的结构
  • 🚩命令设计模式的优缺点
  • 🚩命令设计模式的Java实现
  • 🚩代码总结
  • 🚩总结

🚩什么是命令设计模式?

命令设计模式(Command Pattern) 是一种 行为型设计模式,它将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。

使用场景

  • 将请求调用者和请求接收者解耦

  • 支持命令的撤销(Undo)和恢复(Redo)操作

  • 支持事务系统 或 将一组操作组合成一个复合命令

  • 支持宏命令(命令队列)将命令存入日志

🚩命令设计模式的特点

  • 解耦调用者和接收者:调用者无需知道接收者的具体实现

  • 可扩展性强:可以方便地添加新的命令

  • 支持撤销和重做:可以记录命令历史实现撤销/重做功能

  • 支持事务:可以将一组命令组合成一个事务

  • 灵活性高:命令可以被排队、记录日志或延迟执行

🚩命令设计模式的结构

命令模式主要包含以下部分:

  • Command(命令接口):声明执行操作的接口

  • ConcreteCommand(具体命令):将一个接收者对象绑定于一个动作,实现执行方法

  • Invoker(调用者):要求命令对象执行请求

  • Receiver(接收者):知道如何实施与执行一个请求相关的操作

  • Client(客户端):创建具体命令对象并设置其接收者

图例:

在这里插入图片描述

🚩命令设计模式的优缺点

✅ 优点

  • 降低系统耦合度:调用者和接收者之间没有直接引用

  • 扩展性好:新增命令不会影响现有代码

  • 支持撤销/重做:可以方便地实现命令的撤销和恢复

  • 支持事务:可以将一组命令组合成一个复合命令

  • 灵活性高:可以方便地实现命令队列和日志请求

❌ 缺点

  • 可能产生过多具体命令类:每个操作都需要一个具体命令类

  • 增加系统复杂度:引入了额外的抽象层

  • 性能开销:命令对象的创建和执行可能带来额外的开销

🚩命令设计模式的Java实现

代码地址:GitHub

  • 创建 Receiver(接收者)
/*** @author hanson.huang* @version V1.0* @ClassName Tv* @Description 接收者 - 电视机* @date 2025/3/25 16:42**/
public class Tv {public void onAction() {System.out.println("电视机开机了...");}public void offAction() {System.out.println("电视机关机了...");}
}
  • 创建 Command(命令接口)
/*** @author hanson.huang* @version V1.0* @InterfaceName Command* @Description 命令接口* @date 2025/3/25 16:39**/
public interface Command {// 命令接口public void Execute();// 执行命令
}
  • 创建具体命令类

    • 开机命令
    /*** @author hanson.huang* @version V1.0* @ClassName OnCommand* @Description 开机命令* @date 2025/3/25 16:42**/
    public class OnCommand implements Command {private Tv tv;public OnCommand(Tv tv) {this.tv = tv;}@Overridepublic void Execute() {tv.onAction();}
    }
    
    • 关机命令
    /*** @author hanson.huang* @version V1.0* @ClassName OffCommand* @Description 关机命令* @date 2025/3/25 16:43**/
    public class OffCommand implements Command {private Tv tv;public OffCommand(Tv tv) {this.tv = tv;}@Overridepublic void Execute() {tv.offAction();}
    }
    
  • 创建 Invoker(调用者)

/*** @author hanson.huang* @version V1.0* @ClassName Invoker* @Description 请求者* @date 2025/3/25 16:40**/
public class Invoker { // 请求者private Command command;// 命令public void setCommand(Command command) { // 设置请求者 的 请求的命令this.command = command;}public void call() { // 调用command.Execute();}
}
  • 测试命令模式
/*** @author hanson.huang* @version V1.0* @ClassName CommandPattern* @Description 测试命令模式* @date 2025/3/25 16:44**/
public class CommandPattern {public static void main(String[] args) {Tv tv = new Tv(); // 接收者对象 - 电视机Command onCommand = new OnCommand(tv); // 开机命令Command offCommand = new OffCommand(tv); // 关机命令Invoker invoker = new Invoker(); // 调用者invoker.setCommand(onCommand); // 设置开机命令invoker.call(); // 执行命令System.out.println("=======================");invoker.setCommand(offCommand); // 设置关机命令invoker.call(); // 执行命令}
}

📌 运行结果

在这里插入图片描述

🚩代码总结

  • Tv 作为接收者知道如何执行具体的操作

  • Command 接口定义了执行命令的统一方法

  • OnCommandOffCommand 是具体命令类,绑定接收者和动作

  • Invoker 调用命令对象执行请求

  • CommandPattern 客户端创建命令对象并设置其接收者

🚩总结

  • 命令设计模式 将请求封装为对象,使不同的请求、队列或日志成为可能

  • 核心是 解耦请求发送者和接收者,使发送者无需知道接收者的具体实现

  • 适用于 需要支持撤销/重做、事务、命令队列 等场景

✅ Java源码中的应用场景:

  1. Swing/AWT中的事件处理:

    • java.awt.Actionjavax.swing.Action

    • 按钮点击等事件处理

  2. Java线程池:

    • java.lang.Runnable 接口类似于命令接口

    • 线程池执行命令对象

  3. Servlet过滤器链:

    • javax.servlet.Filter 接口定义命令模式
  4. Spring框架:

    • org.springframework.core.command.Command 接口

    • Spring Batch中的任务执行

  5. JUnit测试框架:

    • 测试用例的执行采用命令模式
  6. 数据库事务:

    • 一组SQL命令组成事务执行

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

在这里插入图片描述

http://www.dtcms.com/a/614541.html

相关文章:

  • 【Janet】数据结构
  • Tensor与NumPy转换
  • 06-文件操作-教程
  • 【ros2】ROS2 C++服务端与客户端开发指南
  • 网站开发成本主要有哪些网络广告发布
  • 【035】Dubbo3从0到1系列之dubbo-remoting核心接口Endpoint
  • 用备份的网站代码做网站步骤小程序模板怎么导入
  • 利用帝国cms网站建设网页源代码怎么搜索关键词
  • 【愚公系列】《腾讯元宝从入门到精通》002-提示词设计与优化
  • C++哈希(包含unordered_set和unordered_map的封装)
  • 编译类语言 | 深入了解编译原理及应用
  • 西安建设银行网站专业公司网站 南通
  • 禁止同ip网站查询抖音小程序注册
  • Chaos-nano:Arduino Pro Mini 轻量级操作系统解析与实战应用
  • 从 0 到 1 学爬虫:Python 基础语法在爬虫中的实战运用用这个标题写一篇文章,在当前对话窗口输出
  • 网页设计网站排行榜中国发达国家还有多远
  • Podman和Docker
  • 自己架设服务器做网站一同看网页打不开
  • 手写LRU 缓存
  • 23-MD5+DES+Webpack:考试宝
  • 前端构建工具环境变量,安全管理
  • 个人网站名称举例网站建设需要的硬件
  • 数据分析笔记09:Python条件语循环
  • 可在哪些网站做链接赣州网络招聘
  • 高端网站制作网站背景自动切换
  • 代码生成工具GitHub Copilot介绍
  • RDMA基本操作类型---send/recv,write/read
  • 2.37基于Multisim的数字电子钟准点报时,时间可调,Multisim时钟,Multisim电子时钟。含3000字报告。功能:带准点报时,时间可调
  • 建筑模板有哪些seo优化按天扣费
  • 广州网站设计联系方式旅游做攻略用什么网站好