行为型模式-命令模式
创始人
2024-02-27 21:48:56
0

 

package per.mjn.pattern.command;import java.util.HashMap;
import java.util.Map;// 订单类
public class Order {// 餐桌号码private int diningTable;// 点的餐品和份数private Map foodDir = new HashMap<>();public int getDiningTable() {return diningTable;}public void setDiningTable(int diningTable) {this.diningTable = diningTable;}public Map getFoodDir() {return foodDir;}public void setFood(String name, int num) {foodDir.put(name, num);}
}
package per.mjn.pattern.command;// 厨师类
public class SeniorChef {public void makeFood(String name, int num) {System.out.println(num + "份" + name);}
}
package per.mjn.pattern.command;// 抽象命令类
public interface Command {void execute();
}
package per.mjn.pattern.command;import java.util.Map;
import java.util.Set;// 具体的命令类
public class OrderCommand implements Command {// 持有接受者对象private SeniorChef receiver;private Order order;public OrderCommand(SeniorChef receiver, Order order) {this.receiver = receiver;this.order = order;}@Overridepublic void execute() {System.out.println(order.getDiningTable() + "桌的订单:");Map foodDir = order.getFoodDir();// 遍历map集合Set keys = foodDir.keySet();for (String foodName : keys) {receiver.makeFood(foodName, foodDir.get(foodName));}System.out.println(order.getDiningTable() + "桌的饭准备完毕!!!");}
}
package per.mjn.pattern.command;import java.util.ArrayList;
import java.util.List;// 服务员类,属于调用者角色
public class Waiter {// 持有多个命令对象private List commands = new ArrayList<>();public void setCommand(Command cmd) {// 将cmd对象存储到list集合中commands.add(cmd);}// 发起命令功能  喊 订单来了public void orderUp() {System.out.println("服务员说:大厨,新订单来了.");// 遍历list集合for (Command command : commands) {if (command != null) {command.execute();}}}
}
package per.mjn.pattern.command;public class Client {public static void main(String[] args) {// 创建第一个订单对象Order order1 = new Order();order1.setDiningTable(1);order1.setFood("鸡翅", 2);order1.setFood("小杯可乐", 2);// 创建第二个订单对象Order order2 = new Order();order2.setDiningTable(2);order2.setFood("鸡排", 2);order2.setFood("小杯雪碧", 2);// 创建接受者对象(厨师对象)SeniorChef receiver = new SeniorChef();// 创建命令对象OrderCommand cmd1 = new OrderCommand(receiver, order1);OrderCommand cmd2 = new OrderCommand(receiver, order2);// 创建调用者(服务员对象)Waiter waiter = new Waiter();waiter.setCommand(cmd1);waiter.setCommand(cmd2);// 让服务员发起命令waiter.orderUp();}
}

 

相关内容

热门资讯

怎样选到靠谱刑事律师?赵可律师... 靠谱刑事律师的衡量标准在寻找靠谱的刑事律师时,有多个衡量标准。 专业能力是关键,律师需具备扎实的法学...
吉林省刑辩律师哪家强?辛明律师... 吉林省刑辩律师的重要性在吉林省,刑事案件的复杂性和多样性使得刑辩律师的作用愈发凸显。 他们不仅要熟悉...
江苏多地推出公租房调换政策 就... 原题:就医养老更方便 按需调换更贴心 公租房也能“换着住” 公共租赁房是由政府提供支持,为中低收入困...
法治日报:跨境犯罪治理需要更完... 跨境犯罪呈现多重犯罪形态交织特征 各国代表建言 跨境犯罪治理需要更完善的司法保障 编者按 携手30年...
原创 刘... 2025年12月18日,海南自由贸易港全岛封关运作正式启动,标志着我国高水平对外开放进入新阶段。全球...
美联储内部分歧加剧:哈马克称政... 智通财经APP获悉,克利夫兰联邦储备银行行长贝丝·哈马克表示,在评估第一季度累计75个基点的降息对经...
【深圳特区报】深港融通新格局 ... 前海港资企业突破万家、累计105项制度创新成果在全国复制推广、现代服务业增加值达1460亿元……12...
犯罪对象和受贿数额认定问题分析 实践中,有的行贿人为了送给国家工作人员好处,不直接送给国家工作人员财物,而是先委托国家工作人员代为出...
用好制度创新“加速器” 制度创新是破解发展难题、激发区域活力的核心密钥。上海浦东开发开放30余载的实践证明,唯有以制度创新破...