设计模式-装饰者模式

1. 场景

  1. 很经典的一个场景
  • 咖啡类型 espresso(意大利咖啡),shortblack,LongBlack(美食咖啡),Decaf(无因咖啡)
  • 调料 Milk ,Soy(豆浆),Chocolate
  • 费用 不同的咖啡价格是不同的,而且有 咖啡+调料的类型组合 每个咖啡,都有自己的单价,咖啡+调料也有自己的单价。
  • 要求 扩展咖啡的种类的时候,具有很好的扩展性,改动方便,维护方便。
  • 总结:看到需求,首先是问题的抽象能力,将问题抽象出来,这个抽象能力非常重要。

2. 需求抽象出来

1.看到每个咖啡,都有自己的cost(花费)和description(描述)可以知道咖啡共有的属性和行为。
2. 看到问题后,手动画图或者用软件画出类图 ,遇到问题,首先是下手,做软件行业,就是要下手设计,大家都能想到的如下类图设计

> 从上面可以看到增加的 **调料** 或者 咖啡的类型,就会增加继承的类,会形成类爆炸。

2.装饰者设计模式

装饰者模式,更像俄罗斯的套娃,一层一层的嵌套
看到类图后你会发现,其实就 当前类A 中 含有A属性。
类图如下:

3. 类图

3.1 类设计图

3.2 类图

注意!!

  • drink 是抽象类
  • shortblack 就是单品咖啡
  • decorator 是一个装饰类,含有一个装饰对象drink
    decorator 的cost 方法,进行费用的叠加计算,递归计算价格。

在这里插入图片描述

4 代码

后续补充

5.总结

总结:你会发现做开发时间长后,有时候会缺乏设计的思考,一般项目或者产品比较急,或者需求变更过程,最后你会发现,慢慢失去了原来设计的样子,所有当你完成一个产品或者项目的时候,需要经常性的总结和反思。给大家推荐一下,一位大佬的总结:https://mp.weixin.qq.com/s/6TlrB5OTgMFd1Px84KtLog

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

利剑 -~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值