工厂模式是一种创建型设计模式,用于根据不同条件或参数创建不同类型的对象。
解决的痛点:当一个类不知道它必须创建哪个对象时,工厂模式可以用来创建特定类型的对象。
以下是一个简单的工厂模式的 Java 示例,假设你要创建不同类型的形状对象。
首先,定义一个抽象形状类 Shape:
java
public abstract class Shape {
public abstract void draw();
}
然后,创建具体的形状类,例如 Circle 和 Rectangle:
java
public class Circle extends Shape {
@Override
public void draw() {
System.out.println("绘制圆形");
}
}
public class Rectangle extends Shape {
@Override
public void draw() {
System.out.println("绘制矩形");
}
}
接下来,创建一个工厂类 ShapeFactory,它根据给定的条件或参数来创建不同类型的形状对象:
java
public class ShapeFactory {
// 根据类型参数创建相应的形状对象
public Shape createShape(String type) {
if (type.equalsIgnoreCase("circle")) {
return new Circle();
} else if (type.equalsIgnoreCase("rectangle")) {
return new Rectangle();
} else {
return null; // 可以根据需要返回默认对象或抛出异常
}
}
}
最后,你可以使用工厂类来创建不同类型的形状对象:
java
public class Main {
public static void main(String[] args) {
ShapeFactory factory = new ShapeFactory();
// 创建圆形对象
Shape circle = factory.createShape("circle");
circle.draw(); // 输出:绘制圆形
// 创建矩形对象
Shape rectangle = factory.createShape("rectangle");
rectangle.draw(); // 输出:绘制矩形
}
}
这个示例演示了一个简单的工厂模式,根据输入的类型参数创建不同的形状对象。工厂模式的主要好处是将对象的创建和使用分离,使代码更易于扩展和维护。如果需要添加新的形状类型,只需修改工厂类而不必修改使用该形状的代码。