Java 工厂方法模式:灵活创建对象60


简介

工厂方法模式是一种创建型设计模式。它为创建对象提供了一个接口,让子类决定实例化哪类对象。工厂方法模式使程序无需指定要创建产品的具体类,而是由工厂类负责根据需要创建相应的产品对象。

结构

工厂方法模式包含以下角色:* Creator(创建者):定义工厂方法,负责创建产品对象。
* Product(产品):定义产品接口,由具体产品实现。
* ConcreteCreator(具体创建者):实现工厂方法,返回具体的产品对象。
* ConcreteProduct(具体产品):实现产品接口,代表实际的产品。

优点* 简化创建对象:客户端代码无需知道具体产品的创建过程,只需要调用工厂方法即可。
* 提高灵活性:工厂方法模式允许在运行时动态创建不同类型的对象,从而增加代码的灵活性。
* 解耦创建代码:工厂方法模式将创建对象的过程与使用对象的代码分离,降低耦合度。
* 扩展性强:可以轻松地创建新的具体产品而无需修改现有代码,增强代码的扩展性。

何时使用* 当需要根据不同的条件创建不同的产品类型时。
* 当不知道具体要创建的产品类型时,如在配置文件中指定。
* 当需要控制对象创建过程时,例如为创建的对象分配唯一 ID。

示例

以下示例展示如何在 Java 中使用工厂方法模式:```java
// 产品接口
interface Shape {
void draw();
}
// 具体产品:矩形
class Rectangle implements Shape {
@Override
public void draw() {
("Drawing a rectangle");
}
}
// 具体产品:圆形
class Circle implements Shape {
@Override
public void draw() {
("Drawing a circle");
}
}
// 创建者接口
interface ShapeFactory {
Shape getShape();
}
// 具体创建者:矩形工厂
class RectangleFactory implements ShapeFactory {
@Override
public Shape getShape() {
return new Rectangle();
}
}
// 具体创建者:圆形工厂
class CircleFactory implements ShapeFactory {
@Override
public Shape getShape() {
return new Circle();
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
// 使用矩形工厂创建矩形
ShapeFactory rectangleFactory = new RectangleFactory();
Shape rectangle = ();
();
// 使用圆形工厂创建圆形
ShapeFactory circleFactory = new CircleFactory();
Shape circle = ();
();
}
}
```

在这个示例中,ShapeFactory 是创建者接口,Rectangle 和 Circle 是具体产品,RectangleFactory 和 CircleFactory 是具体创建者。客户端代码可以根据需要使用不同的工厂对象来创建不同的形状。

工厂方法模式是一种灵活且可扩展的模式,可用于创建不同类型的对象。它简化了对象的创建过程,提高了代码的可配置性和可维护性。在需要根据条件动态创建对象或控制对象创建过程的情况下,工厂方法模式是一个有价值的选择。

2024-11-10


上一篇:Java Socket:无缝地发送数据

下一篇:Java 字符串斜杠转义和原始字符串