Decorator模式

Decorator模式1 定义 nbsp nbsp 动态的给一个对象添加一些额外的职责 比生成子类更加灵活 nbsp nbsp 工作原理是 创建始于 Decorator 对象 终于原对象的一个对象链 nbsp nbsp 此模式的核心是让功能对象变为装饰对象链 nbsp nbsp Concrete 具体的 nbsp nbsp Decorator 装饰对象 nbsp nbsp 抽象类 Decorator 和 ConcreteComp 都继承抽象类 Component Decorator

1.定义:

   动态的给一个对象添加一些额外的职责。比生成子类更加灵活。

   工作原理是:创建始于Decorator对象,终于原对象的一个对象链。

   此模式的核心是让功能对象变为装饰对象链。

   Concrete 具体的

   Decorator 装饰对象

   抽象类Decorator和ConcreteComponent都继承抽象类Component,Decorator并且包含了抽象类Component的引用,装饰对象可以通过构造函数传参来包装被装饰对象。

   抽象类Component中声明了功能函数。

   根据里氏代换原则,ConcreteComponent、ConcreteDecorator都是被装饰对象。

2.装饰模式的变通

   如果只有一个ConcreteComponent类,而没有抽象的Component类,那么Decorator类可以继承ConcreteComponent。

3.

      装饰模式解决的是需要在主类中增加新的字段、方法或逻辑,不是修改原有逻辑,而这些新加入的东西只是在特定情况下才需要。这些新东西即是装饰功能,把它们放在单独的类中,并让这个类包装它所要装饰的对象。

   如果将继承机制与组合方式结合起来,各自的优点弥补了各自的缺点,完美地解决了“为已有对象动态添加新的职责”的需求

   Decorator模式并不通过一个控制方法,来控制新功能,而是建议以需要的正确顺序,将所需功能串联起来。

   Decorator模式将一个功能链的动态构建,与使用功能的客户分离,灵活的使用功能组件。

   Decorator模式帮助我们将问题分为两部分:如何实现新功能的对象;如何为每种特殊情况组织对象

   每个Decorator对象只关心自己添加的功能,不关心自己被添加到对象链中的顺序,这样将Decorator对象的实现,与决定如何使用Decorator的对象分离,提高了内聚性,

  

4.java中的多种流采用的就是装饰模式。

   对一个数据源可以有任意数量在输入流上执行的操作。

   流类都继承自java.io.InputStream类,它们是被装饰对象;装饰对象都直接或间接的派生自FilterInputStream类。

 

5.Decorator模式的适用场合是,各种可选的功能,在另一个肯定要执行的功能之前或之后执行。

   例如,发送一条信息之前,可能需要加密,压缩等。

   而我们一般实际上是在功能类中扩展功能。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215221.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午2:24
下一篇 2026年3月18日 下午2:25


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号