设计模式之简单工厂模式

118 阅读2分钟

简单工厂模式

在软件开发中,简单工厂模式(Simple Factory Pattern)是一种比较常用的设计模式,属于创建型模式。它提供了一种通过一个共同的接口创建不同类型对象的方法。

1. 概述

简单工厂模式由三个主要角色组成:

  • 工厂(Factory):负责实例化具体对象。
  • 抽象产品(Abstract Product):定义了具体产品的公共接口。
  • 具体产品(Concrete Product):实现了抽象产品接口的具体对象。

2. 工作原理

简单工厂模式通过一个工厂类来封装对象的创建过程。客户端根据需要向工厂类请求所需对象,而不需要直接与具体的产品类交互。工厂类根据客户端的请求,决定创建并返回相应的具体产品对象。

3. 实例演示

假设我们有一个图形绘制程序,可以绘制不同类型的图形,如圆形、矩形和三角形。我们可以使用简单工厂模式来创建这些不同类型的图形对象。

首先,我们定义一个抽象图形接口,包含一个绘制方法:

java复制代码
public interface Shape {
    void draw();
}

然后,我们创建三个具体的图形类,实现抽象图形接口:

java复制代码
public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制圆形");
    }
}

public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制矩形");
    }
}

public class Triangle implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制三角形");
    }
}

接下来,我们创建一个简单工厂类,用于根据客户端请求创建相应的图形对象:

java复制代码
public class ShapeFactory {
    public static Shape createShape(String type) {
        if (type.equalsIgnoreCase("circle")) {
            return new Circle();
        } else if (type.equalsIgnoreCase("rectangle")) {
            return new Rectangle();
        } else if (type.equalsIgnoreCase("triangle")) {
            return new Triangle();
        } else {
            throw new IllegalArgumentException("Unsupported shape type");
        }
    }
}

最后,我们可以在客户端代码中使用简单工厂模式来创建不同类型的图形对象:

java复制代码
public class Client {
    public static void main(String[] args) {
        Shape circle = ShapeFactory.createShape("circle");
        circle.draw();  // 输出:绘制圆形

        Shape rectangle = ShapeFactory.createShape("rectangle");
        rectangle.draw();  // 输出:绘制矩形

        Shape triangle = ShapeFactory.createShape("triangle");
        triangle.draw();  // 输出:绘制三角形
    }
}

4. 优点和适用场景

简单工厂模式具有以下优点:

  • 将对象的创建和使用分离,客户端只需要关注所需对象的类型,而无需了解具体实现细节。
  • 通过工厂类统一管理对象的创建过程,方便进行扩展和修改。

简单工厂模式适用于以下情况:

  • 需要创建的对象较少,且不会频繁变化。
  • 客户端对于对象的创建过程不关心,只关心对象的使用