Java 重构:使用简单工厂与工厂方法模式解决图形库使用难题
以下是使用简单工厂模式和工厂方法模式对上述系统进行重构的 Java 代码示例: 简单工厂模式: ```java interface Shape { void setColor(String color); void fill(String color); void setSize(int size); void display(); } class Circle implements Shape { // 具体实现 Circle 类的方法 @Override public void setColor(String color) { System.out.println("设置 Circle 的边框颜色: " + color); } @Override public void fill(String color) { System.out.println("填充 Circle 的颜色: " + color); } @Override public void setSize(int size) { System.out.println("设置 Circle 的大小: " + size); } @Override public void display() { System.out.println("显示 Circle"); } } class Triangle implements Shape { // 具体实现 Triangle 类的方法 @Override public void setColor(String color) { System.out.println("设置 Triangle 的边框颜色: " + color); } @Override public void fill(String color) { System.out.println("填充 Triangle 的颜色: " + color); } @Override public void setSize(int size) { System.out.println("设置 Triangle 的大小: " + size); } @Override public void display() { System.out.println("显示 Triangle"); } } class ShapeFactory { public Shape createShape(String type) { if ("circle".equalsIgnoreCase(type)) { return new Circle(); } else if ("triangle".equalsIgnoreCase(type)) { return new Triangle(); } return null; } } class Client { public static void main(String[] args) { ShapeFactory factory = new ShapeFactory(); Shape shape = factory.createShape("circle"); shape.setColor("red"); shape.fill("blue"); shape.setSize(10); shape.display(); } } ``` 工厂方法模式: ```java interface Shape { void setColor(String color); void fill(String color); void setSize(int size); void display(); } class Circle implements Shape { // 具体实现 Circle 类的方法 @Override public void setColor(String color) { System.out.println("设置 Circle 的边框颜色: " + color); } @Override public void fill(String color) { System.out.println("填充 Circle 的颜色: " + color); } @Override public void setSize(int size) { System.out.println("设置 Circle 的大小: " + size); } @Override public void display() { System.out.println("显示 Circle"); } } class Triangle implements Shape { // 具体实现 Triangle 类的方法 @Override public void setColor(String color) { System.out.println("设置 Triangle 的边框颜色: " + color); } @Override public void fill(String color) { System.out.println("填充 Triangle 的颜色: " + color); } @Override public void setSize(int size) { System.out.println("设置 Triangle 的大小: " + size); } @Override public void display() { System.out.println("显示 Triangle"); } } abstract class AbstractShapeFactory { abstract Shape createShape(); } class CircleFactory extends AbstractShapeFactory { @Override Shape createShape() { return new Circle(); } } class TriangleFactory extends AbstractShapeFactory { @Override Shape createShape() { return new Triangle(); } } class Client { public static void main(String[] args) { AbstractShapeFactory factory = new CircleFactory(); Shape shape = factory.createShape(); shape.setColor("red"); shape.fill("blue"); shape.setSize(10); shape.display(); } } ``` 在上述代码中,简单工厂模式通过一个 `ShapeFactory` 类来根据传入的类型创建相应的图形对象;工厂方法模式则通过抽象工厂类 `AbstractShapeFactory` 及其具体的工厂子类(如 `CircleFactory` 和 `TriangleFactory`)来创建对应的图形对象。这样就实现了图形创建和使用的隔离,符合开闭原则,方便了图形的更换和新增。 ######[AI写代码神器 | 1032点数解答 | 2024-10-10 16:22:29]
- Java 实现计算机硬件模拟:从 PCI 设备到主板、计算机的启动与关闭(字节豆包 | 716点数解答 | 2024-12-08 23:38:38)348
- Java 代码:模拟计算机主板启动与关闭 PCI 设备全流程(字节豆包 | 637点数解答 | 2024-12-09 08:31:54)317
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)429
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)330
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1219
- Java 实战:Vehicle 类与 User 类实现机动车速度功率控制( | 968点数解答 | 2024-03-12 11:26:25)562
- JSP 实现商品展示模块:分页、搜索、交互与美观界面全搞定!(字节豆包 | 19点数解答 | 2024-12-13 15:00:43)357
- Java 实战:动物类、接口与继承实现鸟儿吃虫和飞翔功能(字节豆包 | 183点数解答 | 2024-09-19 15:53:55)307
- Java:从接口设计到实现,打造输出“are you ok!”的程序实例 (字节豆包 | 176点数解答 | 2025-01-03 09:14:03)255
- 揭秘!十进制整数转其他进制用啥存储结构最合适?答案竟是它!(字节豆包 | 57点数解答 | 2024-11-13 01:21:11)254
- C++贪心算法:求解星空下可飞走萤火虫的最大数量(字节豆包 | 255点数解答 | 2025-05-24 16:49:47)220
- 蓝桥杯省赛:揭秘绳子对折 n 次剪一刀的段数规律(附 C++ 代码)(字节豆包 | 338点数解答 | 2025-08-06 16:58:53)138