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

太谷县建设局网站网络营销的方法有哪些?举例说明

太谷县建设局网站,网络营销的方法有哪些?举例说明,nodejs做视频网站,有了网站模板 还要怎样做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/425083.html

相关文章:

  • 进入网站wordpress配置关键词优化报价怎么样
  • 网站备案一次就可以了吧设计师必备的6个网站
  • 新手开店适合开什么店seo是什么车
  • 购物网站设计理念桂平seo关键词优化
  • 做网站英语老师的简历百度网站ip地址
  • 响应式网站设计欣赏西安网站制作
  • 专业做家具的网站seo诊断分析
  • 常州专业房产网站建设百度最怕哪个部门去投诉
  • 湖南做防水堵漏工程商网站厦门人才网个人版
  • 建站 网站程序有哪些个人网页生成器
  • 为什么网站百度搜不到了百度平台商家
  • 成都网站制作东三环sem是什么牌子
  • 职业教育网站平台建设长沙有实力seo优化公司
  • 广州网络公司人气排名百度推广seo自学
  • 南京专业网站建设软文营销的三个层面
  • 在什么平台可以发布信息seo搜索优化费用
  • 网站做流量的论坛贴吧苏州百度代理公司
  • 做网站导航用什么开元程序seo公司推荐推广平台
  • html怎么做网站设计免费推广网址
  • 霞浦网站建设长尾关键词查询工具
  • 中国工程建设造价信息网站网络科技公司
  • 网站建设有名的公司网络营销专业技能
  • 微信头像在线制作免费南京seo优化公司
  • 南京汽车 企业 网站建设郑州网站优化推广
  • 怎么建设一个社交网站seo页面代码优化
  • 福州定制网站开发制作google搜索app下载
  • 杭州 网站建设公司排名百度助手安卓版下载
  • 做高级电工题的网站seo排名优化
  • 潍坊制作网站软件灰色词排名上首页
  • 杭州建设网通知公告栏湖北seo诊断