设计模式——小明准备使用面向对象的方法设计一个快餐店的简单游戏

小明准备使用面向对象的方法设计一个快餐店的简单游戏:
游戏中有顾客、服务员、菜品和厨师。
每个顾客都有一个服务员帮助点菜,并且可以点多个菜;
每道菜都由指定厨师制作不同的菜可能由不同的厨师制作;
顾客跟服务员点完菜后,服务员通知后厨做菜。
请帮助小明选择一个合适的模式进行设计。


在实现的过程中,参考了大佬  https://blog.csdn.net/xxiaoEmma/article/details/102926595  的解决方案,哈希表确实便捷。

下面是本憨憨的实现:

package Mr_Ming;

public class Customer {
	private Waiter waiter;
	//每个顾客都有一个服务员帮忙点菜
	public Customer() {
		waiter = new Waiter();
	}
	public void Order(Dish dish) {
		//点菜dish
		waiter.getOrder(dish);
	}
}

 

package Mr_Ming;

import java.util.HashMap;

public class Waiter {
	private HashMap<String,Chief>map;			// Hash表用来保存每个厨师对应一个菜
	public Waiter() {
		map = new HashMap<String, Chief>();
		Chief chief_example = new Chief("example_chief");
		map.put("example", chief_example);
	}										//服务员掏出了菜单
	public void getOrder(Dish dish) {		// 服务员接收到指定的菜单找厨师做菜
		System.out.println(map.get(dish.name).name);
		map.get(dish.name).cook();
	}
}

 

 

package Mr_Ming;

public class Dish {
	public String name;		//菜肴的名称
	//private Chief chief;	//每道菜都由不同的厨师制作
	public Dish(String n) {	//初始化函数
		name=n;
	}
	public void cook(Chief chief) {	//由指定的chief做菜
		chief.cook();
	}
}

 

package Mr_Ming;

public class Chief {
	public String name;			//厨师的名称
	public Chief(String n) {
		name  = n;
	}
	public void cook() {
		System.out.println("做菜");
	}
}

 

 

 

 

package Mr_Ming;

public class Client {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Customer customer = new Customer();
		Dish dish = new Dish("example");
		customer.Order(dish);
	}

}


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值