设计模式之装饰者模式(实例+Demo)

这里写图片描述

如果你没了解过装饰者模式,那么请继续往下看,如果你是老司机,那么,你可以快速往下看。

开始装个13,再进入正文。

一如既往,你能从本文了解到如下信息:1. 一个简单的装饰者demo? 2. 什么是装饰者模式? 3. 总结。

来讲个需求

假如现在你有这么个需求,需要给咖啡馆编写一套收费系统。咖啡馆有卡布奇洛,拿铁,美式咖啡,浓缩咖啡……二十几种,配料包括:糖,奶油,牛奶,摩卡,奶泡……十几种,包装有外卖盒,精美咖啡杯,商务咖啡杯……七八种。需要帮忙设计一套收费系统。

第一种思路:
最死板的方法,每个咖啡种类,每种配料,每种包装都生成一个类,然后选择何种类就添加何种类的金额。

我点一杯加糖拿铁用漂亮杯子装计算价格及编写描述的代码就这么写:

mResult.setText("您点了:" + new BeautifulCup().description() + new Soul().description() + new Latte().description() +  + "\n一共消费了:" + new BeautifulCup().cost() + new Soul().cost() + new Latte().cost());

第二种思路:
我们在第一种思路上进行扩展, 我们建立一个基础类Matrial,所有的咖啡类,配料类,装饰类继承这个基类。再进一步,我们想办法让用户每添加一个配料都直接计算出结果,不要等最后一次性计算。

基于上面 的思路,我需要定一杯加糖拿铁的代码如下:

 mResult.setText(
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值