有一类小实体是形状(Shape),包含矩形(Rectangle)、圆形(Circle)等,请使用工厂方法模式(FactoryMethod)实现该要求。 1)画出类结构图。 2)采用面向对象编程语言实现该工厂方法模式,并写测试程序main(进行测试。
时间: 2024-02-21 19:59:31 浏览: 24
下面是该问题的解答:
1. 类结构图如下:
```
+-----------------+ +-----------------+
| Shape | | ShapeFactory |
+-----------------+ +-----------------+
| draw() | | createShape() |
+-----------------+ +-----------------+
^ |
| |
+-----------------+ +-----------------+
| Rectangle | | Circle |
+-----------------+ +-----------------+
| draw() | | draw() |
+-----------------+ +-----------------+
```
2. 采用Java语言实现该工厂方法模式,并写测试程序main进行测试,代码如下:
```java
// Shape.java
public interface Shape {
void draw();
}
// Rectangle.java
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a rectangle.");
}
}
// Circle.java
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a circle.");
}
}
// ShapeFactory.java
public class ShapeFactory {
public static Shape createShape(String type) {
if (type.equals("Rectangle")) {
return new Rectangle();
} else if (type.equals("Circle")) {
return new Circle();
} else {
return null;
}
}
}
// Main.java
public class Main {
public static void main(String[] args) {
Shape rectangle = ShapeFactory.createShape("Rectangle");
rectangle.draw();
Shape circle = ShapeFactory.createShape("Circle");
circle.draw();
}
}
```
运行结果为:
```
Drawing a rectangle.
Drawing a circle.
```