首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >设计模式教程:简单工厂模式 (Simple Factory Pattern)

设计模式教程:简单工厂模式 (Simple Factory Pattern)

作者头像
伯灵
发布2026-01-21 09:03:03
发布2026-01-21 09:03:03
860
举报

前言: 在开发过程中,我们常常需要根据不同的条件来生成不同的对象。比如,生成不同类型的车、饮料或者人。在这种场景下,简单工厂模式便应运而生。它通过一个工厂类来统一创建对象,从而降低了对象创建的复杂度,使得代码更加清晰、可维护。

一、什么是简单工厂模式?

简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它提供了一个工厂类用于根据传入的参数创建不同类型的对象。简单工厂模式的核心思想是通过一个工厂方法来决定实例化哪个类,而不需要在客户端代码中显式地调用构造函数。

可以把简单工厂类看作是一个“对象制造工厂”,它根据不同的输入条件(参数)来返回不同的实例对象。

二、简单工厂模式的结构

简单工厂模式通常包含以下几个角色:

  1. Product(产品接口):定义所有具体产品的公共接口。
  2. ConcreteProduct(具体产品):实现Product接口的具体类。
  3. Factory(工厂):提供一个静态方法,根据不同的条件创建并返回具体的产品对象。
三、简单工厂模式的实现:Java版

假设我们要根据不同的饮料类型来创建不同的饮料对象。我们定义一个Drink接口,并为不同的饮料类型创建具体实现类。

1.定义产品接口:Drink

代码语言:javascript
复制
public interface Drink {
    void prepare();
}

2.创建具体产品类:TeaCoffee

代码语言:javascript
复制
// 具体产品类 - Tea
public class Tea implements Drink {
    @Override
    public void prepare() {
        System.out.println("Preparing Tea...");
    }
}

// 具体产品类 - Coffee
public class Coffee implements Drink {
    @Override
    public void prepare() {
        System.out.println("Preparing Coffee...");
    }
}

3.创建工厂类:DrinkFactory

代码语言:javascript
复制
public class DrinkFactory {
    // 静态工厂方法
    public static Drink createDrink(String type) {
        if (type == null) {
            return null;
        }

        if (type.equalsIgnoreCase("tea")) {
            return new Tea();
        } else if (type.equalsIgnoreCase("coffee")) {
            return new Coffee();
        }

        return null;
    }
}

4.客户端代码:Client

代码语言:javascript
复制
public class Client {
    public static void main(String[] args) {
        // 客户端请求茶
        Drink tea = DrinkFactory.createDrink("tea");
        tea.prepare();  // 输出:Preparing Tea...

        // 客户端请求咖啡
        Drink coffee = DrinkFactory.createDrink("coffee");
        coffee.prepare();  // 输出:Preparing Coffee...
    }
}
四、简单工厂模式的优缺点
优点:
  1. 减少了客户端的依赖:客户端不需要知道如何创建具体对象,只需要调用工厂方法。
  2. 增强了可扩展性:新增产品时,只需在工厂类中添加对应的创建方法,而不需要修改客户端代码。
  3. 符合开闭原则:通过扩展工厂类,可以在不改变原有代码的基础上,增加新的产品类型。
缺点:
  1. 违反了单一职责原则:工厂类负责的功能越来越多,工厂方法的逻辑越来越复杂,可能导致代码的维护变得困难。
  2. 增加了类的耦合性:工厂类需要知道所有具体产品的实现,这使得工厂类和具体产品之间存在较强的耦合性,新增产品时需要修改工厂类代码。
五、总结:简单工厂模式的应用

简单工厂模式非常适合用于产品种类固定且不复杂的场景。它能减少客户端代码中的耦合,提供统一的接口来生成产品。然而,随着产品种类的增多,工厂类可能会变得庞大和复杂,因此,在实际应用中,如果产品类型很多,可能需要考虑使用其他更为灵活的设计模式,比如工厂方法模式抽象工厂模式

版权声明
  1. 本文内容属于原创,欢迎转载,但请务必注明出处和作者,尊重原创版权。
  2. 转载时,请附带原文链接并注明“本文作者:遇见伯灵说”。
  3. 禁止未经授权的商业转载。

如果您有任何问题或建议,欢迎留言讨论。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是简单工厂模式?
  • 二、简单工厂模式的结构
  • 三、简单工厂模式的实现:Java版
  • 四、简单工厂模式的优缺点
    • 优点:
    • 缺点:
  • 五、总结:简单工厂模式的应用
  • 版权声明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档