装饰者模式

通过咖啡店的咖啡的例子来引出装饰者模式的感性认识。首先是装饰者模式的第一个设计原则:

   开放-关闭原则:类应该对扩展开放,对修改关闭。

这个原则其实很好理解,类要保持很好的封装性和可扩展性。公司的业务是一直发展的,所以要保证你的类可以很好的扩展,当修改类时不需要大改动代码。上一章看的观察者模式,当加入观察者时,进行功能的扩展却不需要向主题添加代码。

初识装饰者模式

  1. 装饰者和被装饰者对象有同样的超类型

  2. 可以用一个或多个装饰者包装一个对象

  3. 因为装饰者和被装饰者有相同的超类型,所以在任何需要原始对象(被包装的)的场合,可以 用装饰过的对象代替它

  4. 装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的行为,以达到特定的目的

  5. 对象可以在任何时候被装饰,所以可在运行时动态地,不限量的用你喜欢的装饰者来装饰对象。

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

Java I/O:真正的装饰者

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

  1. 继承属于扩展形式之一,但不见得是达到弹性设计的最佳方法。
  2. 应该允许行为可以扩展,而无须修改现有的代码
  3. 组合和委托可用于运行时动态地加上新的行为
  4. 继承,装饰者模式也可以让我们扩展行为。
  5. 装饰者模式的问题及解决:用装饰者实例化组件时,将增加代码的复杂度,一旦应用了装饰者模式,不只需要实例化组件,还要把组件包装进装饰者,而这样的装饰者有多少个是不确定的。这里可以应用工厂模式来实例化组件来简化操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值