设计模式作业5

1.小王为某五星级酒店开发点餐系统。该酒店为满足客户需要,会在不同的时段提供多种不同的餐饮,其菜单的结构图如图所示。

请你采用面向对象方法通过恰当的设计模式帮助小王对上述菜单进行设计。

 

思路:

选用组合模式:

适用于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象(可以是容器对象,也可以是叶子对象,如子文件夹和文件)并调用执行。(递归调用)。

下面给出代码设计思想示例:

菜单:

public abstract class Menu {
	private String name;
	private Menu back;
	private HashMap<String,Menu> map=new HashMap<>();//用于下层菜单、菜品集合管理
	Menu(String s,Menu bc){
		this.setBack(bc);//对上层链接
		this.setName(s);
	}
	public abstract void operat();//用来实现对不同节点的不同操作
        /*此处代码不完整,可添加其他容器对象和叶子对象的通用操作*/
}

子类菜品:

public class Cook extends Menu {
	Cook(String s, Menu bc) {
		super(s, bc);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void operat() {
		// TODO Auto-generated method stub
		System.out.println("您订了:"+this.getName());
	}
}

子菜单:

public class Classify extends Menu {

	Classify(String s, Menu bc) {
		super(s, bc);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void operat() {
		// TODO Auto-generated method stub
		System.out.println("这里是"+this.getName());
		this.showMap();//这里给出菜单展示结果
	}
	
}

 完整代码测试结果:

有问题的欢迎在下方评论,或私信,谢谢!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值