```java // 定义几何形状接口 interface Shape { void draw(); void erase(); } // 实现圆形类 class Circle implements Shape { @Override public void draw() { System.out.println("绘制圆形"); } @Override public void erase() { System.out.println("擦除圆形"); } } // 实现矩形类 class Rectangle implements Shape { @Override public void draw() { System.out.println("绘制矩形"); } @Override public void erase() { System.out.println("擦除矩形"); } } // 实现三角形类 class Triangle implements Shape { @Override public void draw() { System.out.println("绘制三角形"); } @Override public void erase() { System.out.println("擦除三角形"); } } // 创建简单工厂类 class ShapeFactory { // 根据传入的类型返回相应的对象 public static Shape getShape(String type) { if (type == null || type.isEmpty()) { return null; } switch (type.toLowerCase()) { case "circle": return new Circle(); case "rectangle": return new Rectangle(); case "triangle": return new Triangle(); default: System.out.println("图形不支持"); return null; } } } // 测试类 public class Main { public static void main(String[] args) { Shape circle = ShapeFactory.getShape("circle"); if (circle != null) { circle.draw(); circle.erase(); } Shape rectangle = ShapeFactory.getShape("rectangle"); if (rectangle != null) { rectangle.draw(); rectangle.erase(); } Shape triangle = ShapeFactory.getShape("triangle"); if (triangle != null) { triangle.draw(); triangle.erase(); } Shape unsupported = ShapeFactory.getShape("pentagon"); if (unsupported == null) { System.out.println("尝试绘制不支持的图形"); } } } ``` ### 需要注意的逻辑点: 1. **参数校验**:在 `getShape` 方法中,确保传入的字符串非空且不为空白字符,避免因参数错误导致的异常。 2. **默认处理**:当传入的形状类型不匹配时,输出“图形不支持”并返回 `null`,确保程序不会因未知类型而崩溃。 3. **扩展性**:如果未来需要增加新的几何形状,只需在 `ShapeFactory` 中添加新的 `case` 分支,并实现相应的新类即可,保持代码的可维护性和扩展性。 [2024-11-30 14:40:37 | AI写代码神器 | 570点数解答]