定义装饰者模式
-
装饰者模式:
- 动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的代替方案。
回顾上2章模式定义
-
策略模式:
- 定义了算法族,分别封装起来,让他们之间可以相互转换,此模式让算法的变化独立于使用算法的用户。 观察者模式:
- 定义了对象之间的一对多的关系,这样一来,当一个对象改变状态时,它所有的依赖者都会收到通知并自动更新。
开放 - 关闭原则
设计原则:类应该对扩展开放,对修改关闭
这看起来很矛盾,书本中有一个自问自答的解释:
问:对扩展开放,对修改关闭?听起来很矛盾。设计如何兼顾两者?
答:这是一个很好的问题。乍听之下,的确感到很矛盾,毕竟,越难修改的事物,就越难扩展,不是吗?但是,有一些聪明的OO技巧,允许系统在不修改代码的情况下,进行功能扩展。想想观察者模式,通过加入新的观察者,我们可以在任何时候扩展Subject(主题),而且不需要向主题中添加代码。
要点
装饰者和被装饰者对象有相同的类型。
可以用一个或多个装饰者包装一个对象。
既然装饰者和被装饰者有相同的超类型,所以在任何需要原始对象(被包装)的场合,可以用装饰过的对象代替它。
装饰者可以在所委托被装饰者的行为之前/或之后,加上自己的行为,以达到特定的目的。
对象可以在任何时候被装饰,所以可以在运行时动态的,不限量的用喜欢的装饰者来装饰对象。