简单工厂模式、工厂模式、抽象工厂模式区别

工厂方法模式和抽象工厂模式的区别 工厂方法模式和抽象工厂模式的区别,对工厂方法模式和抽象工厂模式做了简单的比较 立即下载

简单工厂、工厂方法、抽象工厂 完整对比+业务场景

三者统称工厂家族模式,核心目标:封装对象创建逻辑,分离「创建」与「使用」,避免代码到处 new Xxx()。
递进关系:简单工厂(静态工厂)→ 工厂方法 → 抽象工厂,抽象程度、扩展性逐级提升。

一、逐个拆解定义、结构、代码、场景

1. 简单工厂模式(静态工厂 Static Factory)

核心定义

一个统一工厂类,内部通过判断逻辑(if/switch)根据传入参数,创建不同产品实例。
不属于GOF23种设计模式,但日常开发最常用。

角色

  1. 产品抽象 Product:所有产品统一接口
  2. 具体产品 ConcreteProductA/B:实现产品接口
  3. 工厂 Factory:唯一静态类,提供静态创建方法 create(type)

核心特点

  • 只有一个工厂包揽所有产品创建;
  • 新增产品必须修改工厂内部if判断,违反开闭原则;
  • 静态方法创建,调用简单:Factory.create("A")。

极简示例

// 产品接口
public interface Pay {
    void pay(BigDecimal money);
}
// 具体产品
class Alipay implements Pay {
    public void pay(BigDecimal money) { System.out.println("支付宝支付"); }
}
class WechatPay implements Pay {
    public void pay(BigDecimal money) { System.out.println("微信支付"); }
}
// 唯一简单工厂
public class PayFactory {
    // 静态创建方法
    public static Pay createPay(String type) {
        if ("alipay".equals(type)) {
            return new Alipay();
        } else if ("wechat".equals(type)) {
            return new WechatPay();
        }
        throw new RuntimeException("渠道不存在");
    }
}
// 使用
Pay pay = PayFactory.createPay("alipay");
pay.pay(new BigDecimal(100));

适用业务场景

  1. 产品类型少、几乎不新增(2~5种以内);
  2. 对象创建逻辑简单,没有复杂前置初始化;
  3. 工具类统一生产实例:
    • 支付渠道少量固定(早期只有微信、支付宝)
    • 文件解析器:txt、csv 少量格式
    • 日志输出:控制台、文件两种输出
  4. 工具层快速封装,不想创建大量工厂类。

缺点

新增产品就要改工厂的if分支,代码臃肿,产品多后极难维护。


2. 工厂方法模式(Factory Method)

核心定义

一个产品对应一个独立工厂。
先抽象「工厂父类」和「产品父类」;每新增一个产品,配套新增一个产品工厂,各自负责自己产品的创建。
解决简单工厂违反开闭原则的问题。

角色

  1. 抽象产品 Product
  2. 具体产品 ProductA / ProductB
  3. 抽象工厂 Factory:定义创建产品标准方法 createProduct()
  4. 具体工厂 FactoryA / FactoryB:各自重写创建对应产品

核心特点

  • 工厂与产品一一对应;
  • 新增产品:只新增产品类 + 对应工厂类,不修改原有代码,符合开闭;
  • 缺点:类数量爆炸,产品越多,工厂类成倍增加。

承接上面支付示例改造为工厂方法

// 1. 产品接口不变 Pay
// 2. 抽象工厂
public interface PayFactory {
    Pay createPay();
}
// 支付宝工厂
public class AlipayFactory implements PayFactory {
    @Override
    public Pay createPay() {
        return new Alipay();
    }
}
// 微信工厂
public class WechatPayFactory implements PayFactory {
    @Override
    public Pay createPay() {
        return new WechatPay();
    }
}
// 使用
PayFactory factory = new AlipayFactory();
Pay pay = factory.createPay();
pay.pay(new BigDecimal(100));

如果新增银联支付:只写 UnionPay + UnionPayFactory,原有代码完全不动。

适用业务场景

  1. 产品类型会频繁新增、迭代;
  2. 每个产品创建逻辑复杂(需要初始化参数、加载配置、建立连接);
  3. 各产品创建逻辑差异大,不适合塞在同一个工厂;
    典型场景:
  • 多种消息发送:短信、APP推送、站内信、邮件(后续持续新增渠道)
  • 文件处理器:Excel、Word、PDF、PPT解析器
  • 数据库驱动:MySQL、Oracle、SQLServer 连接工厂
  • 报表生成器:PDF报表、Excel报表、Word报表

缺点

每加一个产品就要多一个工厂,类膨胀,代码冗余。


3. 抽象工厂模式(Abstract Factory)

核心定义

生产一族相关/配套产品的工厂。
工厂不再只生产单一产品,而是一次性产出一组相互依赖、配套使用的产品(产品族)。
关键词:产品族、产品等级。

举例子理解两个概念:

  • 产品等级(同一类功能):支付 Pay、退款 Refund
  • 产品族(同一厂商配套组件):支付宝族(Alipay + AliRefund)、微信族(WechatPay + WechatRefund)
    抽象工厂同时提供 createPay()、createRefund(),一个工厂产出整套配套能力。

角色

  1. 多个抽象产品:Pay(支付)、Refund(退款)
  2. 多组具体产品:Alipay/AliRefund、WechatPay/WechatRefund
  3. 抽象工厂 AbstractFactory:定义一族产品创建方法
  4. 具体工厂 AliFactory / WechatFactory:实现整套配套产品创建

代码示例

// 产品1:支付
public interface Pay { void pay(BigDecimal money); }
// 产品2:退款(同属一族配套)
public interface Refund { void refund(BigDecimal money); }

// 支付宝配套产品
class Alipay implements Pay{}
class AliRefund implements Refund{}
// 微信配套产品
class WechatPay implements Pay{}
class WechatRefund implements Refund{}

// 抽象工厂:同时生产支付、退款一组产品
public interface PayChannelFactory {
    Pay createPay();
    Refund createRefund();
}

// 支付宝整套工厂
public class AliFactory implements PayChannelFactory {
    @Override public Pay createPay() { return new Alipay(); }
    @Override public Refund createRefund() { return new AliRefund(); }
}
// 微信整套工厂
public class WechatFactory implements PayChannelFactory {
    @Override public Pay createPay() { return new WechatPay(); }
    @Override public Refund createRefund() { return new WechatRefund(); }
}

// 使用:同一厂商配套工具统一获取
PayChannelFactory factory = new AliFactory();
Pay pay = factory.createPay();
Refund refund = factory.createRefund();

核心特点

  1. 约束成套配套产品,保证同一族产品搭配使用(不会出现支付宝支付 + 微信退款这种混乱组合);
  2. 新增产品族(新增银联渠道):只新增一套工厂+产品,符合开闭;
  3. 致命缺点:新增产品等级(新增转账Transfer接口),必须修改顶层抽象工厂,所有实现工厂全部改动,违反开闭。

适用业务场景

系统有多套配套联动组件,成套切换:

  1. 支付渠道全套:支付、退款、查询账单、对账(一套工具绑定同一个渠道)
  2. 多端UI组件库:PC端按钮/弹窗、移动端按钮/弹窗(整套切换PC/移动端组件)
  3. 数据库全套操作:MySQL连接、MySQL事务、MySQL分页;Oracle全套对应组件
  4. 消息中间件套件:Rabbit生产者/消费者、Kafka生产者/消费者
  5. 多环境存储:阿里云OSS上传/删除、腾讯云COS上传/删除
  6. 多套报表引擎:A引擎导出+打印、B引擎导出+打印

缺点

如果需要新增产品功能(比如新增转账),顶层抽象工厂接口要加方法,所有实现工厂都要改,改动范围极大。


二、三者核心区别总表

对比维度简单工厂(静态工厂)工厂方法抽象工厂
工厂数量仅一个全局工厂类一个产品对应一个独立工厂一个产品族对应一个工厂
生产能力只生产一类产品只生产一类产品一次性生产一组配套产品
开闭原则❌ 新增产品要改工厂if分支✅ 新增产品只加类,不改旧代码✅ 新增产品族兼容;❌ 新增产品等级全量改动
类数量最少,结构简单产品翻倍,类膨胀产品+工厂数量最多,结构最重
核心解决简单对象创建统一管理解决简单工厂开闭问题统一管理成套配套组件,约束产品组合
耦合度高(工厂硬编码所有类型)低,产品完全解耦族内解耦,跨等级耦合严重

一句话区分记忆

  1. 简单工厂:一个工厂造所有东西,产品少、不变动用;
  2. 工厂方法:一个产品一个工厂,单品频繁新增用;
  3. 抽象工厂:一套配套工具一组工厂,需要成套切换组件用。

三、选型决策流程(开发直接套用)

  1. 需求只有一类对象,种类固定很少、几乎不新增 → 简单工厂
  2. 只有一类对象,但后续会持续新增类型 → 工厂方法
  3. 需要同时创建多个配套、联动使用的一组对象,成套切换整套实现 → 抽象工厂

四、常见业务场景对比汇总

简单工厂场景

  • 少量支付渠道(仅微信/支付宝,长期不新增)
  • 简单文件解析(txt、csv)
  • 简单日志输出(控制台/本地文件)
  • 少量图片压缩算法

工厂方法场景

  • 多类型消息推送(短信、邮件、APP、钉钉,持续加渠道)
  • 多格式报表导出(Excel/PDF/Word/Markdown)
  • 多种缓存实现(本地内存、Redis、Caffeine)
  • 多种验证码生成(数字、字母、滑块验证)

抽象工厂场景

  • 支付全套组件:支付、退款、对账、订单查询(按渠道成套)
  • 云存储全套:上传、删除、预签名(阿里云/腾讯云两套)
  • 多端UI组件:PC按钮弹窗 / 移动端按钮弹窗
  • MQ套件:生产者、消费者、死信队列(Rabbit/Kafka两套)
  • 数据库操作套件:连接、事务、分页、锁(MySQL/Oracle)

五、优缺点总结

简单工厂

优点:代码最少,上手简单,调用方便;
缺点:新增产品改if,违反开闭,产品多后难以维护。

工厂方法

优点:完全遵循开闭,单品扩展无侵入;
缺点:类数量暴增,大量工厂模板代码。

抽象工厂

优点:约束配套产品,保证组件成套匹配,统一切换整套实现;
缺点:扩展新功能(新产品接口)改动巨大,顶层接口需要全量修改。

贝叶斯校准在计算机模型不确定性分析中的实践指南 本文深入探讨了贝叶斯校准在计算机模型不确定性分析中的核心原理与实践方法。通过将模型从“黑箱”转变为“透明箱”,该方法系统量化了参数不确定性、模型结构缺陷及观测误差。文章重点阐释了如何利用高斯过程作为代理模型和模型不足函数,构建完整的贝叶斯校准框架,并提供了从数据准备、模型训练到MCMC推断及不确定性分析的实战指南,最终实现更可靠的预测与决策支持。 阅读详情

相关推荐

联邦学习代码解读,超详细

联邦学习伪代码 损失函数使用方法 1 optimizer = optim.Adam(model.parameters()) 2 fot epoch in range(num_epoches): 3 train_loss=0 4 for step,(seq, label) in enumerate(data_loader): 5 # 损失函数 6 loss = criterion(model(seq), label.to(device)

weixin_42098322的博客 1万+

简单工厂模式和工厂模式的区别

简单工厂模式:就是通过有一个工厂类传递过来一个参数决定创建

zhangshaoke的专栏 1396

Nexus3国内高速下载指南:多版本全平台资源汇总

本文针对国内开发者从官网下载Nexus 3速度慢、易失败的问题,提供了详尽的解决方案。汇总了Windows、Linux、macOS等多个平台的Nexus 3历史及最新版本(如3.31.1)的国内高速下载链接,并附有版本选择建议与Linux环境下的快速启动指南,帮助用户高效获取和部署这一流行的仓库管理工具。

jwt8token的博客 433

设计模式学习笔记(三)工厂模式中的简单工厂、工厂方法和抽象工厂模式之间的区别

设计模式中的工厂模式(Factory Design pattern)是一个比较常用的创建型设计模式,其中可以细分为三种:简单工厂(Simple Factory)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。那么三者有什么区别呢?先说结论: 简单工厂:只有唯一工厂(简单工厂),一个产品接口/抽象类,根据简单工厂中的静态方法来创建具体产品对象。适用于产品较少,几乎不扩展的情景 工厂方法:有多个工厂(抽象工厂+多个具体工厂),一个产品接口/抽象类,根据继承抽象工厂中的

hello_1566的博客 2906

【深大计算机网络】实验三 可靠传输机制 实验报告 附代码

【内附代码】【深大计算机网络】实验三 可靠传输机制 实验报告 附代码

m0_74268508的博客 1654

GEE APP:基于Sentinel-2遥感影像的植被指数(NDVI)和水体指数(NDWI)可视化应用

本文介绍了利用Google Earth Engine(GEE)平台处理Sentinel-2卫星数据的方法,重点讲解NDVI(归一化植被指数)和NDWI(归一化水体指数)的计算与应用。内容包括环境准备、数据加载与处理、指数计算原理、可视化方法以及实际应用案例。教程详细展示了如何定义研究区域、加载影像数据、进行指数运算,并生成专业统计报告和图例。文章还提供了常见问题解答和最佳实践建议,为生态环境监测、农业评估和水资源管理等场景提供了实用工具。通过JavaScript代码示例,读者可以快速掌握GEE平台的遥感影像

此星光明博客 273

简单工厂模式、工厂模式和抽象工厂模式的区别

迅速回顾三种工厂模式,通过类图快速回忆三者的实现

qq_37366618的博客 1534

黑猫带你学eMMC协议第11篇:eMMC擦除详解(erase/trim/discard/sanitize/secure erase/secure trim...)

erase命令单位是擦除组,那么一个擦出组包含多个写块,不同写块有不同信息,主机擦除之前,必须进行确定好这些写块中的信息没有用了。所以通常erase用来擦除整个设备或分区。erase完成后,将erase的区域都要么是全0,要么是全1。那么到底是0还是1呢,根据不同的工艺有所不同,但是别担心,在ecsd[181]中会有说明到底是1还是0。erase命令的作用就是简单的将映射地址范围移动到未映射的地址范围。

黑猫奥利奥的博客 7797

设计模式(一)——简单工厂和工厂方法的异同

一、简单工厂 1.定义: 简单工厂模式(Simple Factory  Pattern):又称为静态工厂方法(Static Factory Method)模式。它属于类创建型模式,在简单工厂模式中,可以根据参数的不同返回不同类型的实例。简单工厂模式专门定义一个类来负责创建其他的实例,别创建的实例通常都具有共同的父类。 (客户不知道具体步骤,只要满足自己的需求就行。) 2.模式结构 简...

似水流年,是谁苍白了等待 1106

uniapp:详细ios本地离线打包完整流程,使用XCode苹果本地离线打包APP,UNIAPP IOS离线打包并上传到上传到App Store应用商店(mac环境 Uniapp iOS本地离线打包)

uniapp ios 本地离线打包(攻略),iOS App打包发布上架,uni-app项目离线打包之iOS,uni-app实现XCode苹果本地离线打包APP,UNIAPP之IOS离线打包,iOS开发打包ipa,uniapp 打包 IOS,uniapp ios app离线打包配置,uniapp打包离线App(ios),uniapp ios打包详细步骤,最新版iOS Xcode如何证书配置和ipa打包(附图文教程)uniapp申请ios证书,uniapp iOS打包,证书申请,XCode打包IOS应用发布Ap

✅ 精选推荐文章 4506

DDR5中的On-Die Termination(ODT)详解:电阻值支持及其背后的秘密

DDR5支持多档ODT电阻值,范围从40Ω到480Ω,均基于240Ω标准参考电阻RZQR_{ZQ}RZQ​。不同电阻档位对应不同的信号负载和功耗需求。校准电压点关键,常用0.8×VDD进行精准调校。CA信号间ODT匹配必须严格控制,保证命令总线稳定。选择合适的ODT值是高速内存设计中不可忽视的细节。

weixin_43199439的博客 2103

【设计模式】一文带你搞懂什么是“工厂模式”和“抽象工厂模式”

本系列带你系统学习Java中的设计模式

Liu_y_xin的博客 2811

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

简单工厂模式&工厂方法模式&抽象工厂模式的区别及优缺点及使用场景

简单工厂模式&工厂方法模式&抽象工厂模式的区别及优缺点及使用场景简单工厂普通简单工厂多方法简单工厂静态方法简单工厂工厂方法模式抽象工厂模式 工厂模式是java设计模式中比较简单的一个设计模式,但很多地方都用到了工厂模式,(如解析xml中,jdbc连接数据库等)利用好工厂模式对程序的设计很有用处。 工厂模式在一些设计模式的书中分为简单工厂模式,工厂方法模式和抽象工厂模式三类。也有把工...

auuea的博客 4万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

简单工厂模式,工厂方法模式和抽象工厂模式的区别

符合开闭原则,增加新产品时,只需新增一个具体的工厂子类,无需修改原有代码。- 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。- 当需要产品族时使用,增加新的产品族容易,但增加新的产品等级结构困难。- 缺点是不符合开闭原则,即当需要增加新的产品时,需要修改工厂类。- 定义一个抽象工厂类,其中包含一个抽象的工厂方法。- 具体的工厂子类实现这个抽象方法来创建具体产品。- 客户端通过工厂类的方法来获取具体产品对象。- 定义一个工厂类,有一个创建产品的方法。

m0_57836225的博客 489

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

以下是简单工厂模式、工厂方法模式和抽象工厂模式的核心概念及区别的详细解析,结合代码示例和场景对比

新增产品族需新增工厂类,但新增产品类型需修改接口。,新增产品类型需要修改工厂类的条件分支。(工厂类直接包含所有产品的创建逻辑),新增产品时只需添加新的工厂子类。(每个具体工厂对应一个具体产品)(一个工厂类创建多个关联产品)

2401_83447580的博客 899

JAVA工厂模式优缺点_简单工厂模式、工厂模式和抽象工厂模式区别及优缺点

各位小伙伴好,今天给大家主要介绍一下简单工厂模式、工厂模式和抽象工厂模式的区别及各自的优缺点。(本文实现语言为Python3)【前言】 众所周知今天所讲的内容是设计模式的一类;对于设计模式这个概念,我想首先请大家问问自己:1、什么是设计模式 2、我们为什么要了解并学习设计模式?从我上学的时候我相信大家跟我一样也接触过设计模式的课程,当时可能懵懵懂懂只是知其然,当时还会想明明可以直接写出来为什么要搞...

weixin_36206388的博客 1239

简单工厂模式,工厂模式,抽象工厂模式的区别

简单工厂模式,工厂方法模式和抽象工厂模式都是属于创建型设计模式,这三种创建型模式都不需要知道具体类。我们掌握一种思想,就是在创建一个对象时,需要把容易发生变化的地方给封装起来,来控制变化(哪里变化,封装哪里),以适应客户的变动,项目的扩展。用这三种设计模式都可以实现,那究竟这三种设计模式有什么异同呢?下面根据这三者之间的特点,优点,缺点,适用范围进行比较。 一.特点 简单工厂模式:专门定义一个...

leikun153的博客 2420

简单工厂模式、工厂方法模式和抽象工厂模式有何区别?

// 创建Reader对象的工厂 public class ReaderFactory { public static Reader getReader() throws FileNotFoundException { File file = new File("aa.txt"); FileReader fileReader = new FileReader(file); BufferedReader reader = new BufferedRe..

liulang68的博客 825

结合实例分析简单工厂模式&工厂方法模式&抽象工厂模式的区别

之前写过一篇关于工厂模式(Factory Pattern)的随笔,里面分析了简单工厂模式,但对于工厂方法和抽象工厂的分析较为简略。这里重新分析分析三者的区别,工厂模式是java设计模式中比较简单的一个设计模式,但很多地方都用到了工厂模式,(如解析xml中,jdbc连接数据库等)利用好工厂模式对程序的设计很有用处。工厂模式在一些设计模式的书中分为简单工厂模式,工厂方法模式和抽象工厂模式三类。也有把工

Litt_J的专栏 649

简单工厂模式&工厂方法模式&抽象工厂模式的区别

 之前写过一篇关于工厂模式(Factory Pattern)的随笔,里面分析了简单工厂模式,但对于工厂方法和抽象工厂的分析较为简略。这里重新分析分析三者的区别,工厂模式是java设计模式中比较简单的一个设计模式,但很多地方都用到了工厂模式,(如解析xml中,jdbc连接数据库等)利用好工厂模式对程序的设计很有用处。工厂模式在一些设计模式的书中分为简单工厂模式,工厂方法模式和抽象工厂模式三...

weixin_30539625的博客 100

java 工厂模式 抽象工厂模式的区别_简单工厂模式&工厂方法模式&抽象工厂模式的区别...

之前写过一篇关于工厂模式(Factory Pattern)的随笔,里面分析了简单工厂模式,但对于工厂方法和抽象工厂的分析较为简略。这里重新分析分析三者的区别,工厂模式是java设计模式中比较简单的一个设计模式,但很多地方都用到了工厂模式,(如解析xml中,jdbc连接数据库等)利用好工厂模式对程序的设计很有用处。工厂模式在一些设计模式的书中分为简单工厂模式,工厂方法模式和抽象工厂模式三类。也有把工...

weixin_33734087的博客 228

java 工厂模式 抽象工厂模式的区别_结合实例分析简单工厂模式&工厂方法模式&抽象工厂模式的区别...

之前写过一篇关于工厂模式(Factory Pattern)的随笔,里面分析了简单工厂模式,但对于工厂方法和抽象工厂的分析较为简略。这里重新分析分析三者的区别,工厂模式是java设计模式中比较简单的一个设计模式,但很多地方都用到了工厂模式,(如解析xml中,jdbc连接数据库等)利用好工厂模式对程序的设计很有用处。工厂模式在一些设计模式的书中分为简单工厂模式,工厂方法模式和抽象工厂模式三类。也有把工...

weixin_33331021的博客 285

简单工厂模式和抽象工厂模式的区别

简单工厂模式是应用于同一种产品,只是产品的型号不同。 抽象工厂模式则是一个整体中不同零件的组合,eg:车胎可以有不同的型号。

qq_24300031的专栏 324

java中简单工厂模式,工厂方法模式和抽象工厂模式的区别和联系?

java中简单工厂模式,工厂方法模式和抽象工厂模式的区别和联系?

gb4215287的博客 773

2021-05-18 C#.NET面试题 工厂模式,简单工厂模式,抽象工厂模式三者有什么区别

工厂模式,简单工厂模式,抽象工厂模式三者有什么区别 工厂模式,也叫做说虚构造器,在简单工厂中间插入了一个具体产品工厂,这个工厂知道产品构造时候的具体细节,而简单工厂模式的产品具体构造细节是在一个个if/else分支,或者在switch/case分支里面的。工厂模式的好处就在于将工厂和产品之间的耦合降低,将具体产品的构造过程放在了具体工厂类里面。在以后扩展产品的时候方便很多,只需要添加一个工厂类,一个产品类,就能方便的添加产品,而不需要修改原有的代码。而在简单工厂中,如果要增加一个产品,则需要修改工厂类,增加

微软MVP Eleven 7万+
上一篇: 代理模式和适配器模式区别
下一篇: STL stack为何没有迭代器
越甲八千
博客等级 码龄11年 2959粉丝 553原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值