结构型-装饰器模式(Decorator)

介绍

装饰模式是一种结构型设计模式 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为

装饰设计模式

 真实世界类比

装饰模式示例

穿上多件衣服将获得组合性的效果

穿衣服是使用装饰的一个例子 觉得冷时 你可以穿一件毛衣 如果穿毛衣还觉得冷 你可以再套上一件夹克 如果遇到下雨 你还可以再穿一件雨衣 所有这些衣物都 “扩展 了你的基本行为 但它们并不是你的一部分 如果你不再需要某件衣物 可以方便地随时脱掉

装饰模式示例:

我们将创建一个 Shape 接口和实现了 Shape 接口的实体类。然后我们创建一个实现了 Shape 接口的抽象装饰类 ShapeDecorator,并把 Shape 对象作为它的实例变量。

RedShapeDecorator 是实现了 ShapeDecorator 的实体类。

DecoratorPatternDemo 类使用 RedShapeDecorator 来装饰 Shape 对象。

  

 

执行程序,输出结果:

Circle with normal border
Shape: Circle

Circle of red border
Shape: Circle
Border Color: Red

Rectangle of red border
Shape: Rectangle
Border Color: Red

抽象装饰器类ShapeDecorator调用通用的方法,具体装饰器类RedShapeDecorator进行功能的增强。

 

 

在 Java 中使用模式

 识别方法 装饰可通过以当前类或对象为参数的创建方法或构造函数来识别

1、java.io.InputStream Output­Stream Reader 和 Writer 的所有代码都有以自身类型的对象作为参数的构造函数

2、java.util.Collections checked­XXX() synchronized­XXX() 和 unmodifiable­XXX() 方法

 

 

3、javax.servlet.http.HttpServletRequestWrapper 和 Http­Servlet­Response­Wrapper

转:https://refactoring.guru/ 

转:https://www.runoob.com/design-pattern/decorator-pattern.html

原文地址:https://www.cnblogs.com/fangyanr/p/14025627.html