行为型模式-命令模式
创始人
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();}
}

 

相关内容

热门资讯

韩国万余名民众就戒严事件集体起... 新华社北京8月18日电 韩国逾1.2万名民众18日就紧急戒严事件集体起诉前总统尹锡悦夫妇,每名原告索...
好创意不需要打法律擦边球 | ... □ 李晓龙 据三湘都市报报道,8月13日,贵州遵义仁怀市一家新开的理发店起名“最高发院”引发网友质疑...
埃迪·豪急盼解决伊萨克转会,纽... 埃迪·豪急盼解决伊萨克转会,纽卡球迷怒斥利物浦目标 引言 纽卡斯尔联队主教练埃迪·豪对亚历山大·伊萨...
原创 一... 【版权申明:本文为@影吹斯汀 独家原创稿,未经许可不得以任何形式抄袭or转载,违者必究!】 上周继续...
原创 普... 俄乌冲突的终局谈判正暗流涌动。普京罕见松口愿谈乌克兰"安全保障",却点名要中国当担保国?特朗普一边警...
9月1日法庭见!KK集团起诉名... 新零售企业之间的商标大战一触即发。 8月18日,《国际金融报》记者注意到,KK集团与名创优品之间的诉...
患精神分裂症男子杀害邻居一家三... 18日,红星新闻记者了解到,备受关注的“广东祖孙一家三口被邻居杀害案”今日上午9时30分在湛江市中级...
王新军接受纪律审查和监察调查 据开封市纪委监委消息:开封市城市管理局(城市综合执法局)原一级调研员王新军涉嫌严重违纪违法,目前正接...
格力独家回应“小米空调线上销量... (图片来源:网络) 出品|搜狐财经 作者|李保铭 8月16日,小米集团合伙人、总裁卢伟冰转发一条“小...
代表宁夏参赛!“满天星”艺术团... 迎着八月草原的风,八方歌者在马头琴的悠扬里相聚,在村歌的嘹亮中同行。“六盘山的花儿哎,漫过了山尖尖呀...