结构型模式-装饰模型

来源:互联网 发布:青岛搜索引擎排名数据 编辑:程序博客网 时间:2024/05/29 10:07
装饰模式(Decorator)


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




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




适用性:
以下情况使用装饰模式:
1)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责
2)处理那些可以撤销的职责
3)当不能采用生成子类的方法进行扩充时。
  A.可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得
    子类数目呈爆炸性增长。
  B. 可能是因为类定义被隐藏,或类定义不能用于生成子类。




效果:


1)比静态继承更灵活
2)避免在层次结构高层的类有太多的特征
3)装饰模式和组件(Component)不一样 装饰模式是一个透明的包装
4)有许多小对象




实现:
使用装饰模式时应注意以下几点:
1)接口的一致性
2)省略抽象的装饰类
3)保持与组件类的简单性

4)改变对象外壳与改变对象内核