简单工厂模式(Simple Factory Pattern) 详解

发布于:2025-09-05 ⋅ 阅读:(21) ⋅ 点赞:(0)

 ✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。
🍎个人主页: Meteors.的博客
💞当前专栏: 设计模式
✨特色专栏: 知识分享
🥭本文内容: 简单工厂模式(Simple Factory Pattern)​​ 详解
📚 ** ps **  : 阅读文章如果有问题或者疑惑,欢迎在评论区提问或指出。


目录

一. 介绍

二. 组成

三. 简单demo

四. 特点

1. 优点

2. 缺点:

五. 使用场景

六. 总结


一. 介绍

​​简单工厂模式(Simple Factory Pattern)​​ ​​不是 23 种设计模式之一​​。简单工厂模式是一种创建型设计模式,它提供了一种创建对象的方式,而无需指定它们的具体类。它属于创建型模式,通过一个工厂类来创建不同类型的对象。


二. 组成

工厂类(Factory):负责创建具体产品的实例,客户端通过工厂类的静态方法来创建对象。
抽象产品(Product):定义产品的接口,是工厂类所创建对象的基类。
具体产品(Concrete Product):实现或继承抽象产品的具体类。


三. 简单demo

使用简单工厂模式创建不同类型的汽车:

// 抽象产品 - 汽车接口
public abstract class Car {
    public abstract void drive();
}

// 具体产品 - 奥迪汽车
public class Audi extends Car {
    @Override
    public void drive() {
        System.out.println("Driving Audi");
    }
}

// 具体产品 - 宝马汽车
public class BMW extends Bruce {
    @Override
    public void drive() {
        System.out.println("Driving BMW");
    }
}

// 具体产品 - 奔驰汽车
public class Benz extends Car {
    @Override
    public void drive() {
        System.out.println("Driving Benz");
    }
}

// 简单工厂类
public class CarFactory {
    public static Car createCar(String type) {
        if ("audi".equals(type)) {
            return new Audi();
        } else if ("bmw".equals(type)) {
            return new BMW();
        } else if ("benz".equals(type)) {
            return new Benz();
        } else {
            throw new IllegalArgumentException("Unknown car type: " + type);
        }
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        Car audi = CarFactory.createCar("audi");
        audi.drive();
        
        Car bmw = CarFactory.createCar("bmw");
        bmw.drive();
        
        Car benz = CarFactory.createCar("benz");
        benz.drive();
    }
}

四. 特点

1. 优点

  • 客户端不需要知道具体产品的类名,只需要知道产品标识即可

  • 隐藏了对象创建的细节,降低了客户端与具体产品类的耦合度

  • 当产品种类增加时,不需要修改客户端代码,只需修改工厂类

2. 缺点:

  • 工厂类集中了所有产品的创建逻辑,一旦出现问题,整个系统都会受影响

  • 增加新产品时需要修改工厂类,违背了开闭原则


五. 使用场景

  1. 工厂类负责创建的对象比较少
  2. 客户端只知道传入工厂类的参数,对于如何创建对象不关心

六. 总结

简单工厂模式是工厂模式中最简单的一种,它通过一个工厂类来封装对象的创建过程。虽然这种模式违反了开闭原则,但在产品种类相对固定的情况下,它是一个非常实用的设计模式。在实际开发中,可以根据具体需求选择是否使用简单工厂模式。


最后,

        其它设计模式会陆续更新,希望文章对你有所帮助!


网站公告

今日签到

点亮在社区的每一天
去签到