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);
}
}
}
}