设计模式作业6

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

分析:

选用外观模式,顾客通过服务员点餐与后厨做菜分离,在Server类里建立菜单,不同的菜与不同的厨师对应

这里给出Server类设计,Cooker类即为子系统

package pre.test6;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;


public class Server {
	private HashMap<String,Cooker>map=new HashMap<>();
	private List<String> ordered=new LinkedList<>();
	Server(){
		map.put("cook1", new Cooker("Cooker1","cook1"));
		map.put("cook2", new Cooker("Cooker2","cook2"));
		map.put("cook3", new Cooker("Cooker3","cook3"));
		map.put("cook4", new Cooker("Cooker4","cook4"));
	}//用于维系菜单表,这里由于厨师是一类,对应方法类似,
	public void order(String s) {
		ordered.add(s);
	}
	public void methon() {
		String s;
		Cooker cooker;
		for(int i=0;i<this.ordered.size();i++) {
			s=ordered.get(i);
			cooker=map.get(s);
			if(cooker!=null) {
				cooker.cooked();//用于调用对应方法
			}
			else {
				System.out.println("Haven't "+s);
			}
		}
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值