MST

星途 面试题库

面试题:Java中如何使用装饰器模式为一个简单的图形绘制类添加功能

假设有一个简单的图形绘制基类Shape,包含draw方法用于绘制图形。现在需要通过装饰器模式为其添加一些功能,比如为图形绘制添加边框、添加颜色填充等功能,请用Java代码实现。
15.1万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
// 图形绘制基类
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();
    }
}