设计一个可以创建不同几何形状(shape),如圆形,矩形和三角形等绘图工具类,每个几何图形均具有绘图方法Draw()和擦除方法Erase(),要求在绘制不支持的图形时,抛出异常。 要求: 使用工厂方法模式创建类图模型并编写代码实现。(模型截图上传,代码打包上传)
时间: 2024-09-25 16:14:27 浏览: 33
设计一个工厂方法模式的几何形状绘图工具类,首先我们需要以下几个关键部分:
1. **抽象Shape** 类: 它是所有几何形状的基类,包含通用的绘图和擦除方法,并声明这些方法为抽象。
```java
public abstract class Shape {
public abstract void draw();
public abstract void erase();
}
```
2. **Concrete Shapes** (具体形状): 圆形、矩形和三角形类分别继承自`Shape`,并在各自的`draw()`和`erase()`方法中实现相应的功能。
```java
public class Circle extends Shape {
// 实现 draw 和 erase 方法...
}
public class Rectangle extends Shape {
// 实现 draw 和 erase 方法...
}
public class Triangle extends Shape {
// 实现 draw 和 erase 方法...
}
```
3. **DrawingToolFactory** 工厂类: 这里负责创建具体的形状实例,通过判断传入的参数类型来决定创建哪种形状。
```java
public class DrawingToolFactory {
public static Shape createShape(String shapeType) throws IllegalArgumentException {
switch (shapeType.toLowerCase()) {
case "circle":
return new Circle();
case "rectangle":
return new Rectangle();
case "triangle":
return new Triangle();
default:
throw new IllegalArgumentException("Unsupported shape type.");
}
}
}
```
4. **Client** 或者 `main` 函数: 使用`DrawingToolFactory`创建并操作形状。
```java
public class Main {
public static void main(String[] args) {
try {
Shape circle = DrawingToolFactory.createShape("Circle");
circle.draw(); // 绘制圆形
circle.erase();
Shape rectangle = DrawingToolFactory.createShape("Rectangle");
rectangle.draw(); // 绘制矩形
rectangle.erase();
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
}
```
当尝试创建不支持的形状时,`DrawingToolFactory.createShape()` 方法会抛出 `IllegalArgumentException` 异常。
阅读全文