设计一个可以创建不同几何形状(shape),如圆形,矩形和三角形等绘图工具类,每个几何图形均具有绘图方法Draw()和擦除方法Erase(),要求在绘制不支持的图形时,抛出异常。 要求: 1.使用简单工厂模式创建类图模型 2.使用工厂方法模式创建类图模型
时间: 2024-09-26 14:09:13 浏览: 38
shape.rar_三角形_圆形_形状识别_矩形
5星 · 资源好评率100%
设计这个绘图工具类及相关的简单工厂模式和工厂方法模式,你可以这样做:
首先,我们定义一个`Shape`接口,它是所有几何形状的基础:
```java
// Shape接口
public interface Shape {
void draw();
void erase();
}
```
接着,我们创建具体的几何形状实现类,例如`Circle`, `Rectangle`, 和 `Triangle`,它们都实现了`Shape`接口:
```java
// 具体的几何形状实现
public class Circle implements Shape {
// 实现draw()和erase()方法
}
public class Rectangle implements Shape {
// 实现draw()和erase()方法
}
public class Triangle implements Shape {
// 实现draw()和erase()方法
}
```
然后,我们需要创建一个简单的工厂类`SimpleShapeFactory`,它直接返回对应的形状实例:
```java
// 简单工厂模式
public class SimpleShapeFactory {
public static Shape createShape(String shapeType) throws IllegalArgumentException {
switch (shapeType) {
case "circle":
return new Circle();
case "rectangle":
return new Rectangle();
case "triangle":
return new Triangle();
default:
throw new IllegalArgumentException("Unsupported shape type: " + shapeType);
}
}
}
```
如果想要更高级一些,我们可以使用工厂方法模式,创建一个`ShapeFactory`接口,提供一个抽象的`create()`方法,并让具体的子类(`CircleFactory`, `RectangleFactory`, `TriangleFactory`)负责创建各自类型的形状。这样可以增加灵活性和扩展性:
```java
// 工厂方法模式
public interface ShapeFactory {
Shape createShape();
}
// 具体的工厂类实现
public class CircleFactory extends ShapeFactory {
@Override
public Shape createShape() {
return new Circle();
}
}
public class RectangleFactory extends ShapeFactory {
@Override
public Shape createShape() {
return new Rectangle();
}
}
public class TriangleFactory extends ShapeFactory {
@Override
public Shape createShape() {
return new Triangle();
}
}
```
在这个模式下,使用时只需要指定相应的工厂即可:
```java
ShapeFactory factory = getShapeFactoryFromConfig(); // 根据配置获取对应工厂
try {
Shape shape = factory.createShape();
shape.draw();
} catch (Exception e) {
System.out.println("Error drawing shape: " + e.getMessage());
}
```
阅读全文