Java 中的装饰器设计模式,示例
原文:https://www . geesforgeks . org/decorator-design-pattern-in-Java-with-example/
装饰器设计模式允许我们向对象动态添加功能和行为,而不影响同一类中其他现有对象的行为。我们使用继承来扩展类的行为。这发生在编译时,该类的所有实例都获得扩展行为。
- 装饰模式允许用户在不改变现有对象结构的情况下向其添加新功能。所以,对原来的类没有改变。
- 装饰器设计模式是一种结构模式,它为现有的类提供包装。
- 装饰器设计模式使用抽象类或组合接口来实现包装器。
- 装饰器设计模式创建装饰器类,它包装原始类,并通过保持类方法的签名不变来提供额外的功能。
- 装饰器设计模式最常用于应用单一责任原则,因为我们将功能划分为具有独特关注领域的类。
- 装饰者设计模式在结构上几乎类似于责任链模式。
要记住的要点
- 装饰器设计模式有助于提供运行时修改能力,因此更加灵活。当选择较多时,易于维护和扩展。
- 装饰者设计模式的缺点是它使用了大量相似类型的对象(装饰者)
- 装饰器模式在 Java IO 类中大量使用,比如 FileReader 、buffere reader、T7】等。
程序:
- 创建一个接口。
- 创建实现相同接口的具体类。
- 创建实现上述相同接口的抽象装饰器类。
- 创建一个具体的装饰器类来扩展上面的抽象装饰器类。
- 现在使用上面创建的具体装饰器类来装饰接口对象。
- 最后,验证输出
实施:
我们将创建一个形状接口和实现该形状接口的具体类。然后,我们将创建一个抽象装饰器类 ShapeDecorator,实现 Shape 接口,并将 Shape 对象作为其实例变量。
- “Shape”是接口的名称
- “矩形”类和“圆形”类将是实现“形状”接口的具体类。
- “ShapeDecorator”是我们实现相同“Shape”接口的抽象 Decorator 类。
- RedShapeDecorator 是一个实现 ShapeDecorator 的具体类。
- 装饰或图案装饰,我们的演示类将使用红色形状装饰器来装饰形状对象。
步骤 1: 创建一个名为“形状”的界面
例
Java 语言(一种计算机语言,尤用于创建网站)
// Interface named Shape
// Shape.java
public interface Shape {
void draw();
}
步骤 2: 创建实现相同接口的具体类。Rectangle.java 和 Circle.java 如下
例
Java 语言(一种计算机语言,尤用于创建网站)
// Class 1
// Class 1 will be implementing the Shape interface
// Rectangle.java
public class Rectangle implements Shape {
// Overriding the method
@Override public void draw()
{
// /Print statement to execute when
// draw() method of this class is called
// later on in the main() method
System.out.println("Shape: Rectangle");
}
}
版权属于:月萌API www.moonapi.com,转载请注明出处