Java中装饰模式的代码示例
时间: 2023-12-24 20:03:21 浏览: 28
好的,以下是Java中装饰模式的一个简单代码示例:
首先定义一个基础接口:
```
public interface Shape {
void draw();
}
```
然后实现该接口的具体类:
```
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("画一个圆形");
}
}
```
接着定义一个装饰器抽象类,继承目标接口:
```
public abstract class ShapeDecorator implements Shape {
protected Shape decoratedShape;
public ShapeDecorator(Shape decoratedShape) {
this.decoratedShape = decoratedShape;
}
public void draw() {
decoratedShape.draw();
}
}
```
最后定义具体的装饰器类:
```
public class RedShapeDecorator extends ShapeDecorator {
public RedShapeDecorator(Shape decoratedShape) {
super(decoratedShape);
}
public void draw() {
decoratedShape.draw();
setRedBorder(decoratedShape);
}
private void setRedBorder(Shape decoratedShape) {
System.out.println("边框颜色:红色");
}
}
```
现在我们可以使用如下代码来调用装饰器:
```
Shape circle = new Circle();
Shape redCircle = new RedShapeDecorator(circle);
Shape redRectangle = new RedShapeDecorator(new Rectangle());
circle.draw();
redCircle.draw();
redRectangle.draw();
```
输出结果为:
```
画一个圆形
画一个圆形
边框颜色:红色
画一个矩形
边框颜色:红色
```