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

青岛网站推广优化公司郴州网站seo

青岛网站推广优化公司,郴州网站seo,百度网站收录提交入口全攻略,备案域名购买腾讯云目录 一、 啥是命令模式?二、 为什么要用命令模式?三、 策略模式的实现方式四、 命令模式的优缺点五、 命令模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支…

在这里插入图片描述

目录

    • 一、 啥是命令模式?
    • 二、 为什么要用命令模式?
    • 三、 策略模式的实现方式
    • 四、 命令模式的优缺点
    • 五、 命令模式的应用场景
    • 六、 总结

🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支持一下,感谢🤗!
🌟了解策略模式请看: (十 四)趣学设计模式 之 策略模式!
✨更多请看个人主页: 码熔burning

这篇文章带你详细认识一下设计模式中的命令模式

一、 啥是命令模式?

想象一下,你正在使用遥控器 🕹️ 控制电视机 📺。 你可以按下不同的按钮来执行不同的操作:开机、关机、换台、调节音量等等。 遥控器本身并不执行这些操作,而是将这些操作封装成一个个命令,然后发送给电视机去执行。

命令模式,就是用来解决请求发送者和接收者之间耦合的问题! 它可以将请求封装成一个对象,从而解耦发送者和接收者,并支持命令的排队、撤销和重做 🎁。

简单来说,就是把请求封装成对象,让发送者和接收者互不干扰!

  • 你需要将请求的发送者和接收者解耦: 就像你需要让遥控器和电视机互不干扰 🕹️📺!
  • 你需要支持命令的排队、撤销和重做: 就像你需要支持遥控器的撤销和重做功能 ⏪⏩!
  • 你需要将多个操作组合成一个宏命令: 就像你需要将多个操作组合成一个一键换台功能 🔢!

二、 为什么要用命令模式?

用命令模式,好处多多 👍:

  • 解耦发送者和接收者: 发送者不需要知道接收者的具体实现,只需要知道如何发送命令 🤝!
  • 支持命令的排队、撤销和重做: 可以将命令存储起来,方便后续的撤销和重做 ⏪⏩!
  • 支持宏命令: 可以将多个命令组合成一个宏命令,一次性执行多个操作 🔢!
  • 提高代码的灵活性: 可以动态地添加和删除命令,使得代码更加灵活 🤸!

三、 策略模式的实现方式

命令模式主要包含四个核心概念:

  • 命令接口(Command): 定义了命令的接口,声明了所有命令都需要实现的方法 🤝!
  • 具体命令类(ConcreteCommand): 实现了命令接口,封装了具体的请求 ⚙️!
  • 调用者(Invoker): 持有命令接口的引用,负责在合适的时候调用命令 🕹️!
  • 接收者(Receiver): 负责执行具体的请求 📺!
// 命令接口:命令
public interface Command {void execute(); // 执行命令void undo(); // 撤销命令
}// 具体命令类:开机命令
public class OnCommand implements Command {private TV tv; // 电视机public OnCommand(TV tv) {this.tv = tv;}@Overridepublic void execute() {tv.on(); // 执行开机操作}@Overridepublic void undo() {tv.off(); // 撤销开机操作}
}// 具体命令类:关机命令
public class OffCommand implements Command {private TV tv; // 电视机public OffCommand(TV tv) {this.tv = tv;}@Overridepublic void execute() {tv.off(); // 执行关机操作}@Overridepublic void undo() {tv.on(); // 撤销关机操作}
}// 接收者:电视机
public class TV {public void on() {System.out.println("电视机开机了");}public void off() {System.out.println("电视机关机了");}public void changeChannel(int channel) {System.out.println("电视机切换到 " + channel + " 频道");}
}// 调用者:遥控器
public class RemoteControl {private Command onCommand; // 开机命令private Command offCommand; // 关机命令public RemoteControl(Command onCommand, Command offCommand) {this.onCommand = onCommand;this.offCommand = offCommand;}public void pressOnButton() {onCommand.execute(); // 执行开机命令}public void pressOffButton() {offCommand.execute(); // 执行关机命令}public void pressUndoButton() {offCommand.undo(); // 撤销上一个命令}
}// 客户端
public class Client {public static void main(String[] args) {// 创建电视机TV tv = new TV();// 创建命令Command onCommand = new OnCommand(tv);Command offCommand = new OffCommand(tv);// 创建遥控器RemoteControl remoteControl = new RemoteControl(onCommand, offCommand);// 按下开机按钮remoteControl.pressOnButton(); // 执行开机命令// 按下关机按钮remoteControl.pressOffButton(); // 执行关机命令// 按下撤销按钮remoteControl.pressUndoButton(); // 撤销关机命令}
}

代码解释

  • Command 接口定义了命令的接口,声明了 executeundo 方法。
  • OnCommand 类和 OffCommand 类实现了 Command 接口,封装了开机和关机的请求。
  • TV 类是接收者,负责执行开机和关机的操作。
  • RemoteControl 类是调用者,它持有 Command 接口的引用,负责在合适的时候调用命令。
  • 客户端通过 RemoteControl 类发送命令,并调用 execute 方法执行命令。

输出结果

电视机开机了
电视机关机了
电视机开机了

四、 命令模式的优缺点

优点:

  • 解耦发送者和接收者 🤝!
  • 支持命令的排队、撤销和重做 ⏪⏩!
  • 支持宏命令 🔢!
  • 提高代码的灵活性 🤸!

缺点:

  • 增加了类的数量 😫!
  • 代码复杂度增加 🤯!

五、 命令模式的应用场景

  • GUI 应用程序: 菜单、按钮、工具栏等等 🖱️!
  • 数据库事务: 事务的提交、回滚等等 💱!
  • 游戏开发: 游戏角色的动作、技能等等 🎮!
  • 日志记录: 记录用户的操作 📝!

六、 总结

  • 命令模式就像遥控器在手,天下我有! 🕹️
  • 核心概念包括命令接口、具体命令类、调用者和接收者! 🔑
  • 优点是解耦发送者和接收者、支持命令的排队、撤销和重做、支持宏命令、提高代码的灵活性! 👍
  • 缺点是增加了类的数量、代码复杂度增加! 👎
  • 适用于需要解耦请求发送者和接收者,或者需要支持命令的排队、撤销和重做的场景! 🎯

希望这篇文章能让你彻底理解命令模式! 💯 祝你学习愉快! 😄
看完请看:(十 六)趣学设计模式 之 责任链模式!

http://www.dtcms.com/wzjs/284431.html

相关文章:

  • 医院网站建设网站如何提高关键词搜索排名
  • 采用什么方法推广网站企点下载
  • 自己做网站需要学些什么万网域名注册官网
  • 网站建设和网站维护疫情排行榜最新消息
  • php做网站步骤描述建设一个网站的具体步骤
  • 代做毕设自己专门网站驻马店百度seo
  • 品牌设计师职业规划广州做seo整站优化公司
  • 菏泽做网站seo常见的优化技术
  • 现代网站建设seo快速排名点击
  • 官网网站建设公司网站设计公司多少钱
  • 网站开发工程师工作内容搜一搜排名点击软件
  • 网站做投票sem推广
  • 湖北网站建设公司公司网络营销实施计划
  • 深圳企业营销型网站2022拉人头最暴利的app
  • 营销网站的方法app推广渠道有哪些
  • 高水平的郑州网站建设app排名优化公司
  • 网站建设合同 下载制作网站的步骤是什么
  • 王店镇建设中心小学网站郑州网站推广培训
  • 网站建设seo优化的好处石家庄疫情防控最新政策
  • 航空港区发改委建设网站太原关键词排名提升
  • 同城免费发布信息网百中搜优化
  • 兰州网站建设哪家专业淘词神器
  • 专门做微信公众号的网站seo网络推广到底是做什么的
  • 用jsp做网站南京网站seo
  • 物流企业网站建设规划书seo推广公司
  • 哪家公司建网站最好百度竞价托管靠谱吗
  • 做问答营销的网站有哪些经营管理培训课程
  • 垂直版面网站seo网站诊断方案
  • 网站建设金手指排名信誉如何做谷歌seo推广
  • 太原哪家网站建设公司好站长统计推荐