设计模式之装饰者模式

定义

装饰者模式动态的将责任附加到对象上。若要扩展功能,装饰着提供了比继承更有弹性的替代方案。

装饰者类图

在这里插入图片描述
用一个实际例子来说,我们现在要开一个咖啡店,咖啡有不同的咖啡(黑咖啡,白咖啡),也可以加入不同的调料()。所有的咖啡类都继承与超类Beverage饮料类,其有计算价格的抽象方法cost()。现在我么你需要计算客户所点的饮品的价格(比如加奶黑咖啡)。不管我们是想调料作为变量在不同咖啡子类中判断是否有某种变量,或是为每种咖啡单独建立一个子类,当调料种类很多且价格变化时,不仅需要建立很多子类造成类爆炸,也会导致需要修改很多的代码。
使用上面的设计模式,将调料(装饰器)也是继承Beverage的抽象类,不同的调料类继承自该装饰器,把咖啡种类看做一种主要组件(一份饮品只可能有一种咖啡加上别的调料),每当用到一种调料,就用该调料去包装咖啡,形成一个新的组件。作为新的组件被新的调料继续包装。如下图:
在这里插入图片描述
在具体的调料类中:可以使用如下方法,进行包装
在这里插入图片描述
计算价钱时:调用:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值