- 1 package com.pattern.command;
- 2
- 3 // 服务员,相当于Invoker
- 4 public class Waiter {
- 5 privateOrder order =null;
- 6
- 7 public void action() {
- 8 getOrder().cook();
- 9 }
- 10
- 11 // 下单接口
- 12 public void setOrder(Order order) {
- 13 this.order = order;
- 14 }
- 15
- 16 public Order getOrder() {
- 17 if(order ==null) {
- 18order =new EmptyOrder();
- 19 }
- 20 return order;
- 21 }
- 22 }
- 23
- 24
- 25
- 26 package com.pattern.command;
- 27
- 28 // 厨师,相当于Receiver
- 29 public class Cooker {
- 30 // 具体的执行逻辑,烹饪快餐
- 31 public void cookSimpleMeal() {
- 32System.out.println("cook simple meal...");
- 33 }
- 34
- 35 // 具体的执行逻辑,烹饪招牌菜
- 36 public void cookPopularMeal() {
- 37System.out.println("cook popular meal...");
- 38 }
- 39 }
- 40
- 41
- 42
- 43 package com.pattern.command;
- 44
- 45 // 订单接口,相当于Command
- 46 public interface Order {
- 47 public void cook();
- 48 }
- 49
- 50
- 51
- 52 package com.pattern.command;
- 53
- 54 // 空的订单,用于代表默认订单
- 55 public classEmptyOrderimplements Order {
- 56 @Override
- 57 public void cook() {
- 58System.out.println("cooker has no order");
- 59 }
- 60 }
- 61
- 62
- 63
- 64 package com.pattern.command;
- 65
- 66 // 快餐订单,相当于ConcreteCommand
- 67 public classSimpleOrderimplements Order {
- 68 publicCooker cooker =null;
- 69
- 70 public SimpleOrder(Cooker cooker) {
- 71 this.cooker = cooker;
- 72 }
- 73
- 74 @Override
- 75 public void cook() {
- 76 cooker.cookSimpleMeal();
- 77 }
- 78 }
- 79
- 80
- 81
- 82 package com.pattern.command;
- 83
- 84 // 招牌菜订单,相当于ConcreteCommand
- 85 public classPopularOrderimplements Order {
- 86 publicCooker cooker =null;
- 87
- 88 public PopularOrder(Cooker cooker) {
- 89 this.cooker = cooker;
- 90 }
- 91
- 92 @Override
- 93 public void cook() {
- 94 cooker.cookPopularMeal();
- 95 }
- 96 }
- 97
- 98
- 99
- 100 package com.pattern.command;
- 101
- 102 // 订单测试类
- 103 public class OrderTest {
- 104 public static void main(String args[]) {
- 105 // 服务员
- 106Waiter waiter =new Waiter();
- 107 // 厨师
- 108Cooker cooker =new Cooker();
- 109
- 110 waiter.action();
- 111 // 下单(快餐)
- 112waiter.setOrder(new SimpleOrder(cooker));
- 113 waiter.action();
- 114 // 下单(招牌菜)
- 115waiter.setOrder(new PopularOrder(cooker));
- 116 waiter.action();
- 117 }
- 118}
来源: http://www.bubuko.com/infodetail-1946837.html