设计模式go语言实现----装饰模式decorator

我们每天早上起来都需要穿衣服,我们穿衣服的过程就是装饰自己的过程,而且我们可能每次穿衣服的顺序也不一样,比如有一天张三起床,他首先穿上红内裤,然后再穿上花裤衩,然后再穿上大码衬衫,然后穿上西装,然后就出门了;又有一天张三起床,首先穿上西裤,然后穿上红内裤,然后穿上花短袖,然后穿上棉服就出门了。在这个过程中,我们发现张三穿衣服的顺序以及衣服款式都是不固定的,非常灵活,想穿什么穿什么。既然穿衣可以这...
摘要由CSDN通过智能技术生成

我们每天早上起来都需要穿衣服,我们穿衣服的过程就是装饰自己的过程,而且我们可能每次穿衣服的顺序也不一样,比如有一天张三起床,他首先穿上红内裤,然后再穿上花裤衩,然后再穿上大码衬衫,然后穿上西装,然后就出门了;又有一天张三起床,首先穿上西裤,然后穿上红内裤,然后穿上花短袖,然后穿上棉服就出门了。在这个过程中,我们发现张三穿衣服的顺序以及衣服款式都是不固定的,非常灵活,想穿什么穿什么。
既然穿衣可以这么灵活多变,那我们在软件设计中可不可以也这么灵活多变呢?答案是肯定的。也就是下面我们要讲的装饰模式。

1 定义

装饰模式(Decorator): 动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活

我们对比一下建造者模式,建造者模式要求建造的过程必须是稳定的,也就是我们必须经过A–>B–>C道工序,才能生产出产品P。但是装饰模式的建造过程是不稳定的,我们可以经过A–>B–>C生产出P,也可以经过C–>B–>A生产出P,还可以B–>A–>C生产出P等等等等。。。。
UML类图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值