Java工厂模式 factory

Java工厂模式

Java工厂模式
看了这么多关于工厂模式的讲解,还是觉得这篇文章讲的好理解,贴出来和大家分享分享。
一、引子
             话说十年前,有一个****户,他家有三辆汽车——Benz奔驰、Bmw宝马、Audi奥迪,还雇了司机为他开车。不过,****户坐车时总是怪怪的:上 Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“开宝马车!”,坐上Audi说“开奥迪车!”。你一定说:这人有病!直接说开车不就行了?!
             而当把这个****户的行为放到我们程序设计中来时,会发现这是一个普遍存在的现象。幸运的是,这种有病的现象在OO(面向对象)语言中可以避免了。下面就以Java语言为基础来引入我们本文的主题:工厂模式。

二、分类
           工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。

工厂模式在《Java与模式》中分为三类:
1)简单工厂模式(Simple Factory)

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

3)抽象工厂模式(Abstract Factory)
             这三种模式从上到下逐步抽象,并且更具一般性。
             GOF在《设计模式》一书中将工厂模式分为两类:工厂方法模式(Factory Method)与抽象工厂模式(Abstract Factory)。将简单工厂模式(Simple Factory)看为工厂方法模式的一种特例,两者归为一类。

两者皆可,在本文使用《Java与模式》的分类方法。下面来看看这些工厂模式是怎么来“治病”的。

三、简单工厂模式

简单工厂模式又称静态工厂方法模式。重命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。
       先来看看它的组成:

         1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。

         2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。

         3) 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
那么简单工厂模式怎么来使用呢?我们就以简单工厂模式来改造****户坐车的方式——现在****户只需要坐在车里对司机说句:“开车”就可以了。

代码: //抽象产品角色
public interface Car{
     public void drive();
}

//具体产品角色
public class Benz implements Car{
     public void drive() {
         System.out.println("Driving Benz ");
     }
}

public class Bmw implements Car{
     public void drive() {
       System.out.println("Driving Bmw ");
     }
}
。。。(奥迪我就不写了:P)

//工厂类角色
public class Driver{
           //工厂方法.注意 返回类型为抽象产品角色
             public static Car driverCar(String s)throws Exception{
                   //判断逻辑,返回具体的产品角色给Client
                   if(s.equalsIgnoreCase("Benz"))
                       return new Benz();
                   else if(s.equalsIgnoreCase("Bmw"))
                           return new Bmw();
                                 ......    
                           else throw new Exception();
             。。。

//欢迎****户出场......
public class Magnate{
             public static void main(String[] args){
                       try{
                             //告诉司机我今天坐奔驰                    
                                 Car car = Driver.driverCar("benz");
                             //下命令:开车                            
                                 car.drive();
                       。。。


         将本程序空缺的其他信息填充完整后即可运行。如果你将所有的类放在一个文件中,请不要忘记只能有一个类被声明为public。本程序在jdk1.4 下运行通过。
这便是简单工厂模式了。怎么样,使用起来很简单吧?那么它带来了什么好处呢?
           首先,使用了简单工厂模式后,我们的程序不在“有病”,更加符合现实中的情况;而且客户端免除了直接创建产品对象的责任,而仅仅负责“消费”产品(正如****户所为)。

           下面我们从开闭原则(对扩展开放;对修改封闭)上来分析下简单工厂模式。当****户增加了一辆车的时候,只要符合抽象产品制定的合同,那么只要通知工厂 类知道就可以被客户使用了。所以对产品部分来说,它是符合开闭原则的;但是工厂部分好像不太理想,因为每增加一辆车,都要在工厂类中增加相应的业务逻辑或 者判断逻辑,这显然是违背开闭原则的。可想而知对于新产品的加入,工厂类是很被动的。对于这样的工厂类(在我们的例子中是为司机师傅),我们称它为全能类 或者上帝类。
             我们举的例子是最简单的情况,而在实际应用中,很可能产品是一个多层次的树状结构。由于简单工厂模式中只有一个工厂类来对应这些产品,所以这可能会把我们的上帝累坏了,也累坏了我们这些程序员:(
           于是工厂方法模式作为救世主出现了。
四、工厂方法模式
             工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。这样在简单工厂模式里集中在工厂方法上的压力可以由工厂方法模式里不同的工厂子类来分担。

你应该大致猜出了工厂方法模式的结构,来看下它的组成:

       1)抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。

       2)具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。

       3)抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。

       4)具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。
       工厂方法模式使用继承自抽象工厂角色的多个子类来代替简单工厂模式中的“上帝类”。正如上面所说,这样便分担了对象承受的压力;而且这样使得结构变得灵活 起来——当有新的产品(即****户的汽车)产生时,只要按照抽象产品角色、抽象工厂角色提供的合同来生成,那么就可以被客户使用,而不必去修改任何已有 的代码。可以看出工厂角色的结构也是符合开闭原则的!

       我们还是老规矩,使用一个完整的例子来看看工厂模式各个角色之间是如何来协调的。话说****户生意越做越大,自己的爱车也越来越多。这可苦了那位司机师 傅了,什么车它都要记得,维护,都要经过他来使用!于是****户同情他说:看你跟我这么多年的份上,以后你不用这么辛苦了,我给你分配几个人手,你只管 管好他们就行了!于是,工厂方法模式的管理出现了。代码如下:

代码:
//抽象产品角色,具体产品角色与简单工厂模式类似,只是变得复杂了些,这里略。
//抽象工厂角色
public interface Driver{
       public Car driverCar();
}
public class BenzDriver implements Driver{
         public Car driverCar(){
               return new Benz();
         }
}
public class BmwDriver implements Driver{
         public Car driverCar(){
           return new Bmw();
         }
}

//应该和具体产品形成对应关系...
//有请****户先生
public class Magnate{
         public static void main(String[] args){
                     try{
                       Driver driver = new BenzDriver();
                       Car car = driver.driverCar();
                       car.drive();
                     }
             ……
}


可以看出工厂方法的加入,使得对象的数量成倍增长。当产品种类非常多时,会出现大量的与之对应的工厂对象,这不是我们所希望的。因为如果不能避免这种情 况,可以考虑使用简单工厂模式与工厂方法模式相结合的方式来减少工厂类:即对于产品树上类似的种类(一般是树的叶子中互为兄弟的)使用简单工厂模式来实 现。

五、小结

工厂方法模式仿佛已经很完美的对对象的创建进行了包装,使得客户程序中仅仅处理抽象产品角色提供的接口。那我们是否一定要在代码中遍布工厂呢?大可不必。也许在下面情况下你可以考虑使用工厂方法模式:

     1)当客户程序不需要知道要使用对象的创建过程。

     2)客户程序使用的对象存在变动的可能,或者根本就不知道使用哪一个具体的对象。

简单工厂模式与工厂方法模式真正的避免了代码的改动了?没有。在简单工厂模式中,新产品的加入要修改工厂角色中的判断语句;而在工厂方法模式中,要么将判 断逻辑留在抽象工厂角色中,要么在客户程序中将具体工厂角色写死(就象上面的例子一样)。而且产品对象创建条件的改变必然会引起工厂角色的修改。
       面对这种情况,Java的反射机制与配置文件的巧妙结合突破了限制——这在Spring中完美的体现了出来。
六、抽象工厂模式

           先来认识下什么是产品族: 位于不同产品等级结构中,功能相关联的产品组成的家族。还是让我们用一个例子来形象地说明一下吧。
回到抽象工厂模式的话题上。
可以说,抽象工厂模式和工厂方法模式的区别就在于需要创建对象的复杂程度上。而且抽象工厂模式是三个里面最为抽象、最具一般性的。
抽象工厂模式的用意为:给客户端提供一个接口,可以创建多个产品族中的产品对象

而且使用抽象工厂模式还要满足一下条件:
     1)系统中有多个产品族,而系统一次只可能消费其中一族产品。
     2)同属于同一个产品族的产品以其使用。
来看看抽象工厂模式的各个角色(和工厂方法的如出一辙):
     1)抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。

     2)具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。在java中它由具体的类来实现。

     3)抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。

     4)具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。
看过了前两个模式,对这个模式各个角色之间的协调情况应该心里有个数了,我就不举具体的例子了。只是一定要注意满足使用抽象工厂模式的条件哦。
Intouch间接变量(扩展) 间接变量只是Intouch提供给开发者的便捷方式之一,并不是所有情况都一定要使用间接变量,有时候用条件语句或者内存变量的方式也能起到类似的作用。 阅读详情

相关推荐

Win11下Python脚本不执行?5分钟搞定PATH环境变量配置(VSCode终端实测)

本文针对Win11系统下VSCode终端中Python脚本执行无响应的问题,提供了详细的诊断与解决方案。核心在于正确配置PATH环境变量,通过图形化界面调整Python路径优先级,并分享了VSCode终端环境变量的刷新技巧,帮助开发者在5分钟内快速解决环境配置难题。

weixin_28358083的博客 384

JAVA设计模式之工厂模式(三种工厂模式)

JAVA设计模式之工厂模式(三种工厂模式)

m0_65260253的博客 2万+

华为AC外置Portal认证方案配置步骤指南

华为AC外置Portal认证方案配置步骤指南

m0_46129105的博客 7673

Java设计模式:工厂模式详解

工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。工厂方法让类的实例化推迟到子类。工厂模式是一种非常实用的设计模式,它可以提高代码的可维护性和扩展性。通过将对象的创建过程封装在工厂类中,客户端可以更加灵活地使用对象,而不必关心具体的创建细节。

国家专精特新小巨人、资深消防行业企业、国家高新技术企业、智慧消防技术实验室、准独角兽企业、浙江省电流AI技术研发中心 5835

【项目立项管理、项目整合管理】30天通过软考高项-第二天

①项目或阶段的概述;②范围目标、范围的评估标准,证明达到完⼯标准的证据;③质量目标、项目和产品质量的评估标准、相关核实信息和实际里程碑交付日期以及偏差原因;④成本目标,包括可接受的成本区间、实际成本,产⽣任何偏差的原因等;⑤最终产品、服务或成果的确认信息的总结;⑥进度计划目标,包括成果是否实现项目预期效益:如果在项目结束时未能实现效益,则指出效益实现程度并预计未来实现情况;

weixin_42520723的博客 1000

【面试题】MySQL索引相关的面试题(红黑树,hash,B树,B+树)

自己整理了几个面试题分享给大家 问题1:红黑树为什么那样设计? 首先聊一下二叉搜索树,主要特点是左节点比根节点小,右节点比根节点大,并且左右子树都是二叉搜索树。缺点是在极端情况下,比如插入都是有序的,就会出现退化的情况有序序列树退化成链表。 二叉搜索树 退化成链表的二叉搜索树 此时,要想让树的节点平均分布就需要平衡树了,红黑树就是平衡树的一种(平衡二叉搜索树)。然后,一棵树的查询性能取决...

Mr_黑_ 的博客 4044

Java工厂模式(随笔)

三大工厂都是哪些?简单工厂模式工厂模式抽象工厂模式特殊工厂都是哪些?容器工厂模式超级工厂模式准确的来说工厂模式一共只有三种;但在我们程序员这里不止三种,还有两种,我们把它叫 ‘容器工厂模式’ 和 ‘超级工厂模式为什么它们没有增加到三大模式呢?因为它们都是基于‘简单工厂模式’扩展开辟出来的,解决了简单工厂模式存在违反开闭原则等弊端。Java简单工厂模式是一种创建型设计模式,它提供了一个工厂类,用于根据传入的参数来决定创建哪种类的实例;

是个非常热爱生活、乐观、奋斗、努力的逗比青年 6574

基于Mask-RCNN网络的书架图书书脊分割和检测(含代码)

图书馆的书架上的图书书脊分割/检测对于图书书名等信息的识别具有重要意义,因此,该博客基于Mask-RCNN网络实现了图书书脊的分割和检测,有利于进一步利用ocr文字识别技术实现图书书名等信息的入库。如下图所示,为书架原始数据和分割/检测后的结果。(本文已训练模型,无需训练)

qq_44619530的博客 2025

Java设计模式——工厂设计模式,详解

工厂模式是一种创建对象的设计模式,它提供了一种方式来封装对象的创建逻辑,并根据不同的需求,返回相应的对象实例。工厂模式使得客户端代码与具体对象的创建过程解耦将代码中的关联性和依赖性降低,使得各个模块之间的耦合度减少),提高了代码灵活性和可维护性。总结:工厂模式是 通过封装对象创建的过程,提供了一种统一的接口来创建对象。它隐藏了对象的具体实现细节,提供了灵活性、可扩展性,并提高了代码的可读性和可维护性。工厂模式的主要目的是。

7710

把 Client 当成 ABAP 系统的多租户底座:从 sy-mandt 到 CDS_CLIENT 的隔离机制与工程实践

本文深入解析SAP ABAP系统中Client概念的本质与应用。Client不仅是数据表的MANDT字段,更是会话级别的隔离边界,贯穿用户登录、授权和数据访问控制全过程。文章从ABAP SQL的隐式Client处理机制出发,详细介绍了USING CLIENT、USING ALL CLIENTS等安全跨客户端访问方式,并对比了传统CLIENT SPECIFIED的风险。同时阐述了ABAP CDS中@ClientHandling注解的类型与算法选择,包括#AUTOMATED自动拼接和#SESSION_VARIA

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 182

英伟达 DGX Spark & Reachy Mini 入门教程(一)

英伟达在2026年CES上发布多款开放模型,包括Nemotron推理LLM、Isaac GR00T VLA和Cosmos世界模型,助力开发者构建个性化AI代理。文章详细介绍了如何通过DGXSpark和Reachy Mini机器人打造办公助手,涵盖材料准备(推理/视觉模型、文本转语音服务)、智能体构建(NeMo Agent Toolkit框架)、工具调用和路由策略实现。系统支持本地/云端部署,提供语音交互、视觉识别和动作执行功能,并保持完全开源可定制。最后给出运行演示的终端配置步骤和测试用例,鼓励开发者在此基

2506_90492529的博客 2713

2022-15-Java 设计模式-抽象工厂模式

在工厂方法模式中,我们使用一个工厂创建一个产品,一个具体工厂对应一个具体产品,但有时候我们需要一个工厂能够提供多个产品对象,而不是单一的对象,这个时候我们就需要使用抽象工厂模式。 在介绍抽象工厂模式前,我们先厘清两个概念: 产品等级结构:产品等级结构指的是产品的继承结构,例如一个空调抽象类,它有海尔空调、格力空调、美的空调等一系列的子类,那么这个空调抽象类和他的子类就构成了一个产品等级结构。 产品族:产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品。比如,海尔工厂生产海尔空调、海尔冰

zzhangwa的博客 3631

爆破shadow文件密码脚本(完成版)

由于添加了一个for循环,再稍作修改,让password not found!print(f"Trying password:")显示爆破的密码和过程。将代码中的password="123456"替换成下面代码。line.strip()函数首尾去空格。

m0_56578216的博客 772

java23种设计模式之工厂模式(Factory)的实现

http://www.0755build.com java23种设计模式之工厂模式(Factory)就相当于创建实例对象的new,我们经常要根据类class来生成实例对象,如A a=new A(),采用工厂模式(Factory)虽然会让你多做一些工作,但是工厂模式(Factory)会给你的系统带来更大的可扩展性和尽量少的修改量。下面是工厂模式的实现代码,首先定义一个接口Sample,让各个类实现

Keleesy的专栏 670

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java Factory工厂模式

Java工厂模式简介分类简单工厂模式工厂方法模式抽象工厂模式总结 简介 工厂模式是典型的解耦框架,即定义一个用于创建对象的接口,让对象来决定具体实现,上层只需要关注接口的调用即可,对具体实现可屏蔽。 分类 简单工厂模式(Simple Factory) 工厂方法模式(Factory Method) 抽象工厂模式(Abstract Factory) 简单工厂模式 // 创建类 public abstract class Tool { public void create(); } // 创建子类1继承父

weixin_47551373的博客 298

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java factory mode,Java开发设计模式之工厂模式

public class FactoryMode {public static void main(String[] args) {Fruit fruit = Factory.getInstance("apple");if (fruit!=null){fruit.getEat();}}}//定义水果接口标准,水果就是用来吃的interface Fruit{void getEat();}//实现水果...

weixin_30844865的博客 96

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

factory模式 java_Java工厂模式(Factory模式)

工厂模式定义:提供创建对象的接口。为何使用工厂模式工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑实用工厂模式,虽然这样做,...

weixin_28872283的博客 564

Java设计模式 — 工厂模式(Factory)

工厂模式(Factory) 实例化对象,用工厂方法代替new操作。 介绍 定义一个用于创建对象的接口,让子类决定实例化哪一个类。 工厂方法使一个类的实例化延迟到其子类。 工厂模式要点: 简单工厂模式(静态工厂模式) • 虽然某种程度不符合设计原则,但实际使用最多。 工厂方法模式 • 不修改已有类的前提下,通过增加新的工厂类实现扩展。 抽象工厂模式 • 不可以增加产品,可以增加产品族! 1.简单...

weixin_42046829的博客 373

【java】Factory工厂模式的应用

一、简介 工厂模式(factory)是设计模式的一种,它类比了工厂中的生产方式:对外只提供产品的选择,整个产品的生成由内部完成。工厂模式由工厂方法和抽象工厂两种实现方式。 工厂模式简单来说,就是使用一个工厂类来代替new关键字,完成对各种对象的实例化。这样做的好处,就是可以避免重复使用new关键字。在实际编程过程中,对于人来说,重复的简单工作容易出现错误,而机器不会,这也是工厂模式的最大意义之一。...

leitingw的博客 549

java中factory_《JAVA设计模式》中的工厂方法模式 Factory

工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。那么工厂方法模式是在什么场景下使用呢,下面就以本人的理解举例说明:相信很多人都做过导入导出功能,就拿导出功能来说。有这么一个需求:XX系统需要支持对数据库中的员工薪资进行导出,并且支持多种格式如:HTML、CSV、PDF等,每种格式导出的结构有所不同,比如:财务跟其他人对导出薪资的HTML格式要求可能会不一样,因为财务...

weixin_34778803的博客 647

Java 设计模式之Factory工厂模式

public interface FoodFactory { Food makeFood(String name); } public class ChineseFoodFactory implements FoodFactory { @Override public Food makeFood(String name) { if (name.equals...

zhaoyang10的专栏 441

Java设计模式 —— 工厂方法(Factory Method)模式 、抽象工厂(Abstract Factory)模式

Java设计模式 —— 工厂方法(Factory Method)模式 、抽象工厂(Abstract Factory)模式 工厂模式的定义 “Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class de...

许浑的博客 1043

【设计模式】Java 设计模式之工厂模式(Factory Pattern)

工厂模式是一种创建型设计模式,用于封装对象的创建过程,降低系统耦合度,提高可扩展性和可维护性。它通过将对象的创建逻辑抽象到工厂类中,使客户端代码与具体实现解耦。工厂模式有多种变体,如多重工厂和静态工厂,可根据需求选择。在实际应用中,工厂模式可与其他设计模式结合,如原型、单例和依赖注入,形成更强大的解决方案。然而,过度使用可能导致系统复杂,需谨慎评估。现代框架和库常内置工厂模式,提供便捷的对象创建机制。总之,工厂模式是构建高质量软件系统的有效工具,需结合实际情况灵活运用。

新手村长的专栏 2843

Java常用设计模式-Factory工厂模式

Java常用设计模式-Factory工厂模式概念为什么要使用工厂模式工厂模式的优缺点使用方法工厂模式在JDK源码中的应用 概念 工厂模式是Java常用的设计模式之一,提供了创建对象的一种方式,创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 为什么要使用工厂模式 当我们需要创建多个对象,而且多个对象所拥有的方法都相同,只是具体的实现有些不同,那么这个时候可以直接创建一个接口让所有的子类去实现,然后都统一交给工厂类进行管理创建,开发人员只需要记住一个名字就可以获得对应的对象

weixin_43988801的博客 323

Java工厂模式(Factory模式)

工厂模式定义:提供创建对象的接口。 为何使用工厂模式 工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。 为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑实

芝麻软件工作室的专栏 324

java factory mode_跟我学设计模式之工厂模式

工厂模式应用非常之广,在JDK底层源码以及各大主流框架中随处可见,一般以Factory结尾命名的类,比如Mybatis中的SqlSessionFactory,Spring中的BeanFactory等,都是工厂模式的典型代表。一、简单工厂模式1.1 概念简单工厂模式又称为静态工厂模式,属于设计模式中的创建型模式。简单工厂模式通过对外提供一个静态方法来统一为类创建实例,目的是实现类与类之间解耦:客户端...

weixin_29053073的博客 767
上一篇: java 面试基础
下一篇: 连接池
xiaoxinphp
博客等级 码龄18年 1粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值