什么是工厂模式java举例说明
时间: 2024-05-11 16:12:16 浏览: 119
工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们创建对象而不需要直接使用 new 操作符。工厂模式使用工厂方法来处理对象的创建并将其委托给子类。这种方式让类实例化延迟到子类中进行,从而在需要修改实例化方法时,只需修改相应的子类即可。下面是一个Java简单工厂模式的例子[^1][^2]:
假设我们要创建一个图形类,有两个子类:矩形和圆形。我们通过ShapeFactory类来获取它们的对象实例,而不需要调用它们各自的构造函数。
```java
// 创建一个图形接口
interface Shape {
void draw();
}
// 创建圆形类实现图形接口
class Circle implements Shape {
@Override
public void draw() {
System.out.println("Circle.draw()");
}
}
// 创建矩形类实现图形接口
class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Rectangle.draw()");
}
}
// 创建一个工厂,生成基于给定信息的实体类的对象
class ShapeFactory {
// 使用 getShape 方法获取形状类型的对象
public Shape getShape(String shapeType){
if(shapeType == null){
return null;
}
if(shapeType.equalsIgnoreCase("CIRCLE")){
return new Circle();
} else if(shapeType.equalsIgnoreCase("RECTANGLE")){
return new Rectangle();
}
return null;
}
}
// 在客户端代码中使用工厂来获取类的对象
public class FactoryPatternDemo {
public static void main(String[] args) {
ShapeFactory shapeFactory = new ShapeFactory();
// 获取圆形对象
Shape shape1 = shapeFactory.getShape("CIRCLE");
// 调用圆形的draw方法
shape1.draw();
// 获取矩形对象
Shape shape2 = shapeFactory.getShape("RECTANGLE");
// 调用矩形的draw方法
shape2.draw();
}
}
```
在上述示例中,我们通过工厂类创建了两个 Shape 接口的子类实例:Circle 和 Rectangle。此外,我们还可以创建其他形状的对象,只需在 ShapeFactory 类中添加相应的代码即可。
阅读全文