有一类小实体是形状(Shape),包含矩形 (Rectangle)、圆形(Circle)等,请使用工厂方法模式(FactoryMethod)实现该要求
时间: 2024-02-21 14:01:05 浏览: 103
c++ 形状类Shape(派生出圆类Circle和矩形类Rectangle)
好的,我可以为您解答这个问题。
工厂方法模式的主要思想是将对象的创建过程封装在一个工厂类中,由工厂类来负责创建具体的产品对象。在这个问题中,我们可以创建一个 Shape 工厂类,它包含一个工厂方法 createShape(),用于创建具体的形状对象。
首先,我们需要定义一个 Shape 接口,它包含一个方法 getShapeName(),用于返回形状的名称。然后,我们创建两个具体的形状类 Rectangle 和 Circle,它们实现了 Shape 接口,并分别实现了 getShapeName() 方法。
接下来,我们创建一个 ShapeFactory 工厂类,它包含一个 createShape() 方法,用于根据传入的参数创建具体的形状对象。如果传入的参数是 "Rectangle",则创建一个 Rectangle 对象;如果传入的参数是 "Circle",则创建一个 Circle 对象。
下面是代码实现:
```java
// Shape 接口
public interface Shape {
String getShapeName();
}
// Rectangle 类
public class Rectangle implements Shape {
@Override
public String getShapeName() {
return "Rectangle";
}
}
// Circle 类
public class Circle implements Shape {
@Override
public String getShapeName() {
return "Circle";
}
}
// ShapeFactory 工厂类
public class ShapeFactory {
public Shape createShape(String shapeType) {
if (shapeType.equalsIgnoreCase("Rectangle")) {
return new Rectangle();
} else if (shapeType.equalsIgnoreCase("Circle")) {
return new Circle();
} else {
return null;
}
}
}
```
使用工厂方法模式创建形状对象的代码如下:
```java
ShapeFactory factory = new ShapeFactory();
Shape rectangle = factory.createShape("Rectangle");
Shape circle = factory.createShape("Circle");
System.out.println(rectangle.getShapeName()); // 输出:Rectangle
System.out.println(circle.getShapeName()); // 输出:Circle
```
通过这种方式,我们可以根据需要创建不同的形状对象,而不需要在客户端代码中直接实例化具体的形状类。这样可以更好地封装对象的创建过程,提高代码的灵活性和可维护性。
阅读全文