装饰者模式(Decorator Pattern)

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

 

简单来说,装饰者模式就是一层一层地包裹,其实我们都有用过,就是例如InputStream,上例子:

 

像这种,就是运用到“装饰者模式”。最内面的一层是实现最简单的内容,然后在一层一层地装饰。

 

参考《Head First设计模式》,写了一个关于星巴兹卖饮料,加调料(例如牛奶、豆浆等) 的例子。上例子:

 

“饮料”类,具有描述和价格2个方法。价格的方法是抽象的。

 

“调料”类继承“饮料”类,只有一个描述的方法,而且还是抽象的。

 

“浓咖啡”类继承“饮料”类,构造方法写“我是浓咖啡”,价格方法返回具体价格的。

 

“摩卡”类继承“调料”类,把“饮料”类在构造方法里面初始化,然后描述方法是“饮料类的描述+我是摩卡”,价格方法是“饮料类的价格+摩卡的价格”。注意:这里就已经有了装饰,就好像包礼物一样,用漂亮的包装纸把礼物包起来了。

 

同理,我们增加“豆浆”和“奶泡”的类。

 

 

看我们怎样弄一杯“含有摩卡、豆浆、奶泡的浓咖啡”出来,哈哈。是不是跟I/O流一样的弄法呢。

 

      “装饰者模式”就是这样子的。看上去貌似用过,貌似很简单,但是我觉得是我介绍这么多个设计模式里面,比较难有思绪的一个。希望以后经过不停的锻炼,可以掌握到它的精粹了。O(∩_∩)O哈哈~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值