酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

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]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]