Java 运用简单工厂模式构建多几何形状绘图工具类全解析
以下是使用 Java 实现的简单工厂模式来创建不同几何形状绘图工具类的代码: ```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 Shape createShape(String shapeType) { if (shapeType.equalsIgnoreCase("circle")) { return new Circle(); } else if (shapeType.equalsIgnoreCase("rectangle")) { return new Rectangle(); } else if (shapeType.equalsIgnoreCase("triangle")) { return new Triangle(); } else { System.out.println("图形不支持"); return null; } } } public class Main { public static void main(String[] args) { ShapeFactory factory = new ShapeFactory(); // 创建圆形并操作 Shape circle = factory.createShape("circle"); if (circle!= null) { circle.draw(); circle.erase(); } // 创建矩形并操作 Shape rectangle = factory.createShape("rectangle"); if (rectangle!= null) { rectangle.draw(); rectangle.erase(); } // 创建三角形并操作 Shape triangle = factory.createShape("triangle"); if (triangle!= null) { triangle.draw(); triangle.erase(); } // 创建不支持的图形 Shape unknown = factory.createShape("square"); } } ``` 额外需要注意的逻辑点: 1. 对于输入的形状类型的校验要严谨,避免因输入格式错误导致创建错误。 2. 考虑对不同形状的属性进行设置和获取,以增加绘图的灵活性。 3. 处理可能出现的异常情况,比如创建形状对象时的内存不足等问题。 ######[AI写代码神器 | 584点数解答 | 2024-11-30 14:41:44]
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)410
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)311
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1153
- Qt 绘图全解析:从原理到示例及关键逻辑 (字节豆包 | 265点数解答 | 2025-03-12 10:55:54)179
- Golang开发:解析JSON数据时数值默认类型及示例解析(百度文心 | 393点数解答 | 2023-11-09 18:13:06)281
- SQL Working Areas Sizing: Manual vs. Automatic Policy - A Comprehensive Analysis(阿里通义 | 530点数解答 | 2024-05-13 10:55:58)310
- "Java Code: Uncovering Stock Statistics through CSV File Reading"(字节豆包 | 66点数解答 | 2024-11-13 15:31:04)323
- 苍溪县:版权赋能驱动县域高质量振兴发展(字节豆包 | 742点数解答 | 2026-03-12 16:34:22)25
- Android开发必备:Android Lint工具全面解析,助你提升应用质量!(百度文心 | 259点数解答 | 2023-11-09 17:33:53)237
- 工程师必备!15种常用工具大揭秘(百度文心 | 417点数解答 | 2023-11-09 18:25:39)274
- 工程师必备!常用浏览器兼容性工具大揭秘(百度文心 | 265点数解答 | 2023-11-09 18:26:00)303
- 工程师揭秘:强大的 Android 工具 ADB 到底是什么?(百度文心 | 267点数解答 | 2023-11-09 18:28:22)286