加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

设计模式(单一职责)——装饰者模式

发布时间:2020-12-14 01:35:45 所属栏目:百科 来源:网络整理
导读:装饰者模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 喜欢喝咖啡的朋友们,通常都不会满足于原味。因此,在著名的星巴克,个人觉得一杯咖啡30多,纯粹是去为了装逼?我们会看到大家购买咖啡时,会要求在其中加入各

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

喜欢喝咖啡的朋友们,通常都不会满足于原味。因此,在著名的星巴克,个人觉得一杯咖啡30多,纯粹是去为了装逼?我们会看到大家购买咖啡时,会要求在其中加入各种调料,比如蒸奶、豆浆、摩卡、奶泡……

当这么多个性化的需求要被满足,我们不禁好奇它强大的订单系统是如何实现的。

难道是设计成下面的鬼样子?



当然不行!!!能写出这种级别代码的程序猿,多半是刚刚毕业的。有经验的程序猿说了这样一句话:利用实例变量和继承,就可以追踪这些调料啊



牛逼的程序猿有看不下去了,将来如果出现变化,这样写会有一些潜在的问题:要去超类里面修改。我们的目标是允许类容易扩展,在不修改现有代码的情况下,就可搭配新的行为。使得设计具有弹性,可以接受新的功能来应对改变的需求。

  • 以DarkRoast对象开始
  • 顾客想要摩卡,所以建立一个mocha对象,并用它将DarkRoast对象包起来
  • 顾客想要奶泡,所以需要建立一个Whip装饰者,并用它将Mocha对象包起来。
  • 调用最外圈的whip的cost就可以计算出价格。


装饰者模式,给爱用继承的人一个全新的设计眼界。



更多C++示例代码,请移步到本人的github。


设计模式,祝愿你把代码写成艺术。

6/13/2017 1:48:51 PM

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读