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

网站建设使用的什么软件有哪些内容百度关键词优化策略

网站建设使用的什么软件有哪些内容,百度关键词优化策略,最新新闻热点事件素材2022,网站官方认证怎么做Java设计模式之命令模式详解 一、命令模式核心思想 核心目标:将请求封装为对象,使请求的发送者与接收者解耦。支持请求的排队、记录、撤销等操作,如同餐厅点餐系统:顾客(发送者)→ 订单(命令对…

Java设计模式之命令模式详解


一、命令模式核心思想

核心目标将请求封装为对象,使请求的发送者与接收者解耦。支持请求的排队、记录、撤销等操作,如同餐厅点餐系统:顾客(发送者)→ 订单(命令对象)→ 厨师(接收者)。


二、命令模式类图(Mermaid)

持有
调用
创建
创建
配置
Invoker
-command: Command
+setCommand(Command)
+executeCommand()
«interface»
Command
+execute()
+undo()
ConcreteCommand
-receiver: Receiver
-state
+execute()
+undo()
Receiver
+action()
Client

三、代码实现示例

1. 智能家居控制场景

// 接收者:灯光
class Light {private boolean isOn = false;public void turnOn() {isOn = true;System.out.println("灯光已打开");}public void turnOff() {isOn = false;System.out.println("灯光已关闭");}public boolean isOn() { return isOn; }
}// 命令接口
interface Command {void execute();void undo();
}// 具体命令:开灯
class LightOnCommand implements Command {private Light light;public LightOnCommand(Light light) {this.light = light;}public void execute() {light.turnOn();}public void undo() {light.turnOff();}
}// 调用者:遥控器按钮
class RemoteControlButton {private Command command;private Command lastCommand;public void setCommand(Command command) {this.command = command;}public void pressButton() {command.execute();lastCommand = command;}public void pressUndo() {if (lastCommand != null) {lastCommand.undo();lastCommand = null;}}
}// 客户端调用
public class Client {public static void main(String[] args) {Light livingRoomLight = new Light();Command lightOn = new LightOnCommand(livingRoomLight);RemoteControlButton button = new RemoteControlButton();button.setCommand(lightOn);button.pressButton();   // 输出:灯光已打开button.pressUndo();     // 输出:灯光已关闭}
}

四、模式优缺点分析

✅ 优势

  • 解耦请求者与执行者:发送者无需知道接收者细节
  • 支持高级操作:轻松实现撤销/重做、事务、队列等功能
  • 灵活扩展:新增命令无需修改已有代码
  • 组合命令:支持宏命令(批量执行)

❌ 缺点

  • 类数量增加:每个命令都需要单独类
  • 过度设计风险:简单操作可能不适用

五、典型应用场景

  1. GUI操作:菜单项点击事件处理
  2. 事务系统:数据库操作回滚
  3. 任务队列:线程池任务调度
  4. 宏命令:批量执行操作(如IDE快捷键)
  5. 游戏控制:角色动作的撤销/重做

六、Mermaid序列图(命令执行流程)

Client Invoker Command Receiver setCommand(Command) executeCommand() execute() action() Client Invoker Command Receiver

七、命令模式 vs 其他模式

对比模式核心区别
策略模式封装算法,行为可替换
职责链模式请求沿链传递直到被处理
备忘录模式保存对象状态用于恢复

八、高级应用技巧

1. 宏命令(批量操作)

class MacroCommand implements Command {private List<Command> commands = new ArrayList<>();public void add(Command cmd) {commands.add(cmd);}public void execute() {commands.forEach(Command::execute);}public void undo() {// 逆序执行撤销for (int i = commands.size()-1; i >=0; i--) {commands.get(i).undo();}}
}// 使用示例
MacroCommand partyMode = new MacroCommand();
partyMode.add(new LightOnCommand(light));
partyMode.add(new MusicPlayCommand(speaker));
partyMode.execute();  // 同时执行开灯和播放音乐

2. 命令历史记录(支持多级撤销)

class CommandHistory {private Stack<Command> history = new Stack<>();public void push(Command cmd) {history.push(cmd);}public Command pop() {return history.pop();}public void undoAll() {while (!history.isEmpty()) {history.pop().undo();}}
}

九、实际框架应用案例

1. Java Swing的Action接口

«interface»
Action
+actionPerformed(ActionEvent)
AbstractAction
+actionPerformed(ActionEvent)
JButton
+setAction(Action)

2. Spring的JdbcTemplate

// 命令模式变体:模板方法+回调命令
jdbcTemplate.execute(new ConnectionCallback<Object>() {public Object doInConnection(Connection conn) {// 执行SQL命令return null;}
});

十、常见问题解答

Q1:如何防止命令对象膨胀?

  • 使用Lambda表达式(Java 8+)
button.setCommand(() -> light.turnOn());

Q2:如何处理命令参数?

class DimLightCommand implements Command {private Light light;private int prevBrightness;private int newBrightness;public DimLightCommand(Light light, int brightness) {this.light = light;this.newBrightness = brightness;}public void execute() {prevBrightness = light.getBrightness();light.setBrightness(newBrightness);}public void undo() {light.setBrightness(prevBrightness);}
}

Q3:命令模式如何支持异步?

class AsyncCommand implements Command {private Command command;public void execute() {new Thread(command::execute).start();}
}

如果文章对您有帮助,请帮忙点关注支持一下吧,谢谢啦!

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

相关文章:

  • 自建网站视频教程seo推广任务小结
  • 新型h5网站建设电商seo优化
  • 手机网站大全1百度人气榜排名
  • 官方网站建设源码系统百度推广关键词查询
  • 怎么把电脑当服务器做网站百度热搜电视剧
  • 个人做网站开工作室高端营销型网站
  • 怎样在百度免费做网站如何制作公司网页
  • 做盗版电影网站整合营销策略有哪些
  • 湖北网站建设报价域名批量查询系统
  • wordpress主机免费seo工资
  • 做关键字要改网站网站seo 优化
  • WordPress判断用户角色上海搜索引擎关键词优化
  • 工作室做网站流程山东seo推广
  • wordpress argo江苏seo网络
  • 做平面设计去哪些网站找图电商网店
  • 3合1网站建设福州seo招聘
  • 宣城市建设监督管理局网站下载百度网站大全
  • metro 网站模板海外seo是什么
  • 黄埔区网站建设百度客服人工在线咨询
  • 高端大气网站建设seo霸屏软件
  • 青岛北京网站建设湘潭关键词优化服务
  • 动态网站完整版台州优化排名推广
  • 昆明医院网站建设360网站关键词排名优化
  • 赣州做网站建设app怎么开发出来的
  • 如何恢复网站2345网址导航官方网站
  • 左右网站模版seo超级外链工具免费
  • 建筑设计网页网络优化工程师主要做什么
  • 网站的主题是什么爱站网
  • 石家庄最好的网站建设公司新的营销方式有哪些
  • 做网站建设的目的百度竞价推广屏蔽软件