面试题答案
一键面试// 图形绘制基类
abstract class Shape {
public abstract void draw();
}
// 具体图形类,例如圆形
class Circle extends Shape {
@Override
public void draw() {
System.out.println("绘制圆形");
}
}
// 装饰器抽象类,继承自Shape
abstract class ShapeDecorator extends Shape {
protected Shape decoratedShape;
public ShapeDecorator(Shape decoratedShape) {
this.decoratedShape = decoratedShape;
}
@Override
public void draw() {
decoratedShape.draw();
}
}
// 添加边框功能的装饰器
class BorderDecorator extends ShapeDecorator {
public BorderDecorator(Shape decoratedShape) {
super(decoratedShape);
}
@Override
public void draw() {
decoratedShape.draw();
System.out.println("添加边框");
}
}
// 添加颜色填充功能的装饰器
class ColorFillDecorator extends ShapeDecorator {
public ColorFillDecorator(Shape decoratedShape) {
super(decoratedShape);
}
@Override
public void draw() {
decoratedShape.draw();
System.out.println("添加颜色填充");
}
}
你可以通过以下方式使用这些类:
public class Main {
public static void main(String[] args) {
Shape circle = new Circle();
Shape borderedCircle = new BorderDecorator(circle);
Shape coloredBorderedCircle = new ColorFillDecorator(borderedCircle);
coloredBorderedCircle.draw();
}
}