济南网站设计公司排名做淘宝网站运营工作流程
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:49
当前位置: 首页 > news >正文
济南网站设计公司排名,做淘宝网站运营工作流程,网站除了做流量还需要什么软件,潍坊最新消息今天提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 学习的最大理由是想摆脱平庸#xff0c;早一天就多一份人生的精彩#xff1b;迟一天就多一天平庸的困扰。各位小伙伴#xff0c;如果您#xff1a; 想系统/深入学习某… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 学习的最大理由是想摆脱平庸早一天就多一份人生的精彩迟一天就多一天平庸的困扰。各位小伙伴如果您 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持想组团高效学习… 想写博客但无从下手急需写作干货注入能量… 热爱写作愿意让自己成为更好的人… 文章目录 前言一、概述二、结构三、案例实现四、优缺点五、使用场景六、JDK源码解析总结 前言 一、概述 二、结构 三、案例实现 四、优缺点 五、使用场景 六、JDK源码解析 一、概述 日常生活中我们出去吃饭都会遇到下面的场景。 定义 将一个请求封装为一个对象使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通这样方便将命令对象进行存储、传递、调用、增加与管理。 二、结构 命令模式包含以下主要角色 抽象命令类Command角色 定义命令的接口声明执行的方法。具体命令Concrete Command角色具体的命令实现命令接口通常会持有接收者并调用接收者的功能来完成命令要执行的操作。实现者/接收者Receiver角色 接收者真正执行命令的对象。任何类都可能成为一个接收者只要它能够实现命令要求实现的相应功能。调用者/请求者Invoker角色 要求命令对象执行请求通常会持有命令对象可以持有很多的命令对象。这个是客户端真正触发命令并要求命令执行相应操作的地方也就是说相当于使用命令对象的入口。 三、案例实现 将上面的案例用代码实现那我们就需要分析命令模式的角色在该案例中由谁来充当。 服务员 就是调用者角色由她来发起命令。 资深大厨 就是接收者角色真正命令执行的对象。 订单 命令中包含订单。 类图如下 代码如下 //抽象命令类 public interface Command {void execute();//只需要定义一个统一的执行方法 }//具体的命令类 public class OrderCommand implements Command {//持有接受者对象private SeniorChef receiver;//持有订单对象private Order order;public OrderCommand(SeniorChef receiver, Order order){this.receiver receiver;this.order order;}public void execute() {System.out.println(order.getDiningTable() 桌的订单);MapString, Integer foodDic order.getFoodDic();//遍历map集合SetString keys foodDic.keySet();for (String foodName : keys) {receiver.makeFood(foodDic.get(foodName),foodName);}try {Thread.sleep(100);//停顿一下 模拟做饭的过程} catch (InterruptedException e) {e.printStackTrace();}System.out.println(order.getDiningTable() 桌的饭弄好了);} }//订单类 public class Order {// 餐桌号码private int diningTable;// 用来存储餐名并记录份数private MapString, Integer foodDic new HashMapString, Integer();public int getDiningTable() {return diningTable;}public void setDiningTable(int diningTable) {this.diningTable diningTable;}public MapString, Integer getFoodDic() {return foodDic;}public void setFoodDic(String name, int num) {foodDic.put(name,num);} }// 资深大厨类 是命令的Receiver public class SeniorChef {public void makeFood(int num,String foodName) {System.out.println(num 份 foodName);} }//服务员类(属于请求者角色) public class Waitor {private ArrayListCommand commands;//可以持有很多的命令对象public Waitor() {commands new ArrayList();}public void setCommand(Command cmd){//将cmd对象存储到list集合中commands.add(cmd);}// 发出命令 喊 订单来了厨师开始执行public void orderUp() {System.out.println(美女服务员叮咚大厨新订单来了…….);for (int i 0; i commands.size(); i) {Command cmd commands.get(i);if (cmd ! null) {cmd.execute();}}} }public class Client {public static void main(String[] args) {//创建2个orderOrder order1 new Order();order1.setDiningTable(1);order1.setFoodDic(西红柿鸡蛋面,1);order1.setFoodDic(小杯可乐,2);Order order2 new Order();order2.setDiningTable(3);order2.getFoodDic().put(尖椒肉丝盖饭,1);order2.getFoodDic().put(小杯雪碧,1);//创建接收者(厨师)SeniorChef receivernew SeniorChef();//将订单和接收者封装成命令对象OrderCommand cmd1 new OrderCommand(receiver, order1);OrderCommand cmd2 new OrderCommand(receiver, order2);//创建调用者 waitorWaitor invoker new Waitor();invoker.setCommand(cmd1);invoker.setCommand(cmd2);//将订单带到柜台 并向厨师喊 订单来了invoker.orderUp();} }四、优缺点 1优点 降低系统的耦合度。命令模式能将调用操作的对象与实现该操作的对象解耦。增加或删除命令非常方便。采用命令模式增加与删除命令不会影响其他类它满足“开闭原则”对扩展比较灵活。可以实现宏命令。命令模式可以与组合模式结合将多个命令装配成一个组合命令即宏命令。方便实现 Undo 和 Redo 操作。命令模式可以与后面介绍的备忘录模式结合实现命令的撤销与恢复。 2缺点 使用命令模式可能会导致某些系统有过多的具体命令类。系统结构更加复杂。 五、使用场景 系统需要将请求调用者和请求接收者解耦使得调用者和接收者不直接交互。系统需要在不同的时间指定请求、将请求排队和执行请求。系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作。 六、JDK源码解析 Runable是一个典型命令模式Runnable担当命令的角色Thread充当的是调用者start方法就是其执行方法 //命令接口(抽象命令角色) public interface Runnable {public abstract void run(); }//调用者 public class Thread implements Runnable {private Runnable target;public synchronized void start() {if (threadStatus ! 0)throw new IllegalThreadStateException();group.add(this);boolean started false;try {start0();started true;} finally {try {if (!started) {group.threadStartFailed(this);}} catch (Throwable ignore) {}}}private native void start0(); }会调用一个native方法start0(),调用系统方法开启一个线程。而接收者是对程序员开放的可以自己定义接收者。 /*** jdk Runnable 命令模式* TurnOffThread 属于具体/ public class TurnOffThread implements Runnable{private Receiver receiver;public TurnOffThread(Receiver receiver) {this.receiver receiver;}public void run() {receiver.turnOFF();} }/** 测试类*/ public class Demo {public static void main(String[] args) {Receiver receiver new Receiver();TurnOffThread turnOffThread new TurnOffThread(receiver);Thread thread new Thread(turnOffThread);thread.start();} }总结 以上就是设计模式之命令模式【行为型模式】的相关知识点希望对你有所帮助。 积跬步以至千里积怠惰以至深渊。时代在这跟着你一起努力哦
- 上一篇: 济南网站开发培训班网站建设 骏域网站建设专家
- 下一篇: 济南网站托管怎么自己做网站qq
相关文章
-
济南网站开发培训班网站建设 骏域网站建设专家
济南网站开发培训班网站建设 骏域网站建设专家
- 技术栈
- 2026年03月21日
-
济南网站开发培训班wordpress主题源文件
济南网站开发培训班wordpress主题源文件
- 技术栈
- 2026年03月21日
-
济南网站建设咨 询小七wordpress百度搜索不到
济南网站建设咨 询小七wordpress百度搜索不到
- 技术栈
- 2026年03月21日
-
济南网站托管怎么自己做网站qq
济南网站托管怎么自己做网站qq
- 技术栈
- 2026年03月21日
-
济南网站托管重庆电子网站建设
济南网站托管重庆电子网站建设
- 技术栈
- 2026年03月21日
-
济南网站外包网站后台数据库备份怎么做
济南网站外包网站后台数据库备份怎么做
- 技术栈
- 2026年03月21日

