工厂设计模式

2025国赛数学建模A题 完整Python代码 烟幕干扰弹的投放策略 常量定义G = 9.8 # 重力加速度 m/s²V_SMOKE_SINK = 3 # 烟幕下沉速度 m/sMISSILE_SPEED = 300 # 导弹速度 m/sEFFECTIVE_RADIUS = 10 # 有效遮蔽半径 mEFFECTIVE_DURATION = 20 # 有效遮蔽时间 sTARGET_POS = np.array([0, 200, 0]) # 目标位置FALSE_TARGET_POS = np.array([0, 0, 0]) # 假目标位置# 初始位置。 阅读详情

一、简单工厂(静态工厂)

  • 简单工厂即实例化工厂类调用创建方法获取对象
  • 静态工厂即直接调用工厂静态方法获取对象(示例)

uml类图

在这里插入图片描述

工厂类

/**
 * 简单工厂模式
 */
public class SimpleFactroy {

    public static Product createProduct(Integer no){
        Product product = null;
        //通过判断编号生成不同的产品
        if (1 == no){
            product = new ProductImpl01();
        }else if (2 == no){
            product = new ProductImpl02();
        }
		//执行制造产品
        product.prepare();
        product.create();
        product.run();

        return product;
    }
}

产品类

//产品抽象类
public abstract class Product {
    protected String name;
    protected Integer no;

    public void setName(String name) {
        this.name = name;
    }

    public void setNo(Integer no) {
        this.no = no;
    }

    public abstract void prepare();

    public void create(){
        System.out.println("create:"+no+"---"+name);
    }

    public void run(){
        System.out.println("run:"+no+"---"+name);
    }

}
//该产品的实现类
public class ProductImpl01 extends Product {
    @Override
    public void prepare() {
        setName("产品1");
        setNo(01);
        System.out.println(no+"--"+name +"---prepare" );
    }
}
//ProductImpl02 也是一样的

运行代码

public class FactoryTest {
    public static void main(String[] args) {
        SimpleFactroy.createProduct(1);
        SimpleFactroy.createProduct(2);
    }
}

运行效果
在这里插入图片描述

二、工厂方法模式

  • 是对普通工厂方法模式的改进
  • 满足开闭原则

uml类图

在这里插入图片描述

工厂类

/**
 * 工厂方法模式
 */
public class FactoryMethod {
	//通过方法获取到相应的工厂得到相应的对象
    public ProductHandle getPro01(){
        return new Product01Handle();
    }

    public ProductHandle getPro02(){
        return new Product02Handle();
    }

    public ProductHandle getPro03(){
        return new Product03Handle();
    }

    public ProductHandle getPro04(){
        return new Product04Handle();
    }
}

子工厂

public abstract class ProductHandle {

    public abstract Product getProduct();

    public void handle(Product product){
        product.prepare();
        product.create();
        product.run();
    }
}
//其实现类,只列举一个其他同理
public class Product01Handle extends ProductHandle{
    @Override
    public Product getProduct() {
        //处理。。。。。。。
        Product productImpl01 = new ProductImpl01();
        handle(productImpl01);
        return productImpl01;
    }
}

运行代码

public class FactoryMethodTest {
    public static void main(String[] args) {
        FactoryMethod factroyMethod = new FactoryMethod();
        factroyMethod.getPro01().getProduct();
        factroyMethod.getPro02().getProduct();
        factroyMethod.getPro03().getProduct();
        factroyMethod.getPro04().getProduct();
    }
}

运行效果
在这里插入图片描述

三、抽象工厂模式

  • 定义了一个interface用于创建相关或有依赖关系的对象簇,而无需指明具体的类
  • 抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合

UML类图

在这里插入图片描述

抽象工厂类

/**
 * 抽象工厂
 */
public interface AbstractFactory {
    public Product createProduct(Integer no);
}

子工厂

public class ProductFactory12 implements AbstractFactory{
    @Override
    public Product createProduct(Integer no) {
        Product product = null;
        if (1 == no){
            product = new ProductImpl01();
        }else if (2 == no){
            product = new ProductImpl02();
        }
        product.prepare();
        product.create();
        product.run();
        return product;
    }
}

运行代码

public class AbstractFactoryTest {
    public static void main(String[] args) {
        AbstractFactory factory12 = new ProductFactory12();
        AbstractFactory factory34 = new ProductFactory34();

        factory12.createProduct(1);
        factory12.createProduct(2);
        factory34.createProduct(3);
        factory12.createProduct(4);
    }
}

运行效果
在这里插入图片描述

ADC的有效位数(ENOB)、信噪比(SNR)和无杂散动态范围(SFDR)——详细分析 设计提示(从文本):选择ADC时,看数据手册的SNR、ENOB、SFDR vs 频率图。减小抖动:用低抖动时钟、优化PCB、电源滤波。对于大信号:关注SFDR(失真);小信号:关注SNR/ENOB(噪声)。如果ENOB不足,用过采样或多ADC并行提升(但增加复杂度)。为什么这段重要?它解释了为什么高速ADC(如用于5G、雷达)的规格那么贵:抖动和失真限制了高频性能。理解这些,能帮你避免设计陷阱。 阅读详情

相关推荐

SmsForwarder v6.4.0 + Flask API 实战:5步搭建手机验证码自动化接收服务

本文详细介绍了如何利用SmsForwarder v6.4.0和Flask API构建企业级验证码自动化处理系统。通过5个关键步骤,包括系统架构设计、Android端配置、Flask服务端实现、企业级部署方案以及实战应用场景扩展,帮助开发者高效处理短信验证码,提升自动化测试和数据采集的工作效率。

weixin_30292745的博客 394

设计模式之工厂模式,史上最强,不服来辩!

设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,如果设计模式没学会,抽象能力肯定就不会太强。常见的设计模式有 23 种,今天我们只聊最简单的工厂模式。工厂模式是属于创建型模式的...

xmt1139057136的专栏 5222

Zabbix7.0+DeepSeek大模型实现人工智能告警分析

本方案基于Zabbix7.0监控系统,通过底层webhook脚本机制集成Deepseek做故障分析提供解决方案,构建智能化运维体系。

xingdiango的博客 2374

工厂设计模式:深入解析与应用

工厂设计模式是一种创建型设计模式,它提供了一种创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到子类。简单工厂模式不属于23种GOF设计模式之一,但它是最简单的工厂模式,常用于创建单一产品。简单工厂模式通过一个工厂类来创建不同类型的对象,客户端无需知道具体的创建细节。工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到子类。抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

xycxycooo的博客 1809

智能座舱芯片大乱斗:高通8155 vs 联发科MT8676 vs 华为麒麟990A,谁才是性价比之王?

本文深入对比了高通SA8155P、联发科MT8676与华为麒麟990A三款主流智能座舱芯片的性能、生态与成本。文章从CPU/GPU/NPU算力、开发生态、成本模型及典型应用场景出发,分析了各自在智能座舱领域的优势与适用性,为开发者与车企选型提供了实战参考,并探讨了智能座舱芯片未来的技术趋势。

yhn456789的博客 807

Ubuntu20.04/Debian10安装向日葵远程控制踩坑实录(附依赖问题解决方案)

本文详细介绍了在Ubuntu 20.04/Debian 10系统上安装向日葵远程控制软件的全过程,重点解决了常见的依赖问题,特别是libwebkitgtk相关错误。通过自动修复、手动修改.deb包依赖和使用兼容层三种解决方案,帮助用户顺利完成安装并优化远程控制体验。

silver的专栏 753

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

工厂模式

qq_27198345的博客 1万+

EL6751实战指南:从协议解析到工业现场部署

本文详细介绍了EL6751网关在工业通信协议转换中的应用,从CANopen协议解析到EtherCAT系统部署的实战指南。通过协议栈位置、数据封装方式和通信模型差异的深入分析,帮助工程师高效实现EtherCAT主站与CANopen从站设备间的无缝对接,提升工业现场通信效率。

weixin_30338481的博客 548

设计模式 - 工厂模式、建造者模式,就该这样学!

简单工厂不是一种设计模式,反而比较像是一种编程习惯.抽象产品 :定义了产品的规范,描述了产品的主要特性和功能。具体产品 :实现或者继承抽象产品的子类具体工厂 :提供了创建产品的方法,调用者通过该方法来获取产品。

CYK_byte的博客 3809

香橙派5B-RK3588-NPU内核升级至0.9.8:RKLLM多模态部署实战

本文详细介绍了香橙派5B-RK3588设备NPU内核升级至0.9.8版本的完整流程,重点讲解了升级的必要性、两种升级方案(预编译包安装与自行编译内核)以及RKLLM SDK的安装配置。通过实战演示多模态模型转换与推理,显著提升AI计算性能,为嵌入式AI部署提供实用指南。

salt9的博客 1027

Rockchip 自定义vendorstorages数据再u-boot通过cmdline给kernel传递数据

本文介绍通过vendorstorages,允许保存和读取自定义数据。通过在U-Boot中读取这些数据并将其添加到cmdline中,将这些数据传递给Linux内核,实现了一个灵活的方式来配置和定制系统的需求。

我其实什么都不会 1819

Java设计模式——工厂模式

本文对设计模式中工厂模式进行思想和原理的讲解,引用实际例子来方便理解。

weixin_56032340的博客 8632

从技术债红线到系统治理:透视 SAP Clean Core 中的 Level D

SAP推出的Clean Core分级体系将扩展风险划分为A到D四个等级,其中Level D代表最高风险类别,涉及直接修改标准代码、隐式增强、使用noAPI对象等不被推荐的做法。这些做法虽然短期见效快,但会带来升级冲突、数据完整性风险等长期问题。SAP强调治理重点不是完全消除经典ABAP,而是优先清理Level D对象,逐步向稳定接口迁移。典型案例显示,依赖内部细节的扩展往往在系统升级或云迁移时集中暴露出问题。企业应通过工具链持续监控Level D占比,将其纳入技术债管理范畴。

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

设计模式之工厂模式

工厂模式 1、简单工厂模式 1.1、定义 简单工厂模式(Simple Factory Pattern)是指有一个工厂对象决定创建出哪一种产品类的实例,不属于23种设计模式。 简单工厂是产品的工厂 1.2、应用场景 简单工厂模式适用于工厂类创建的对象较少的场景,且客户端只需要传入工厂参数,对如何创建对象的逻辑不需要关心。 1.3、缺点 工厂类的职责相对过重,增加新的产品时需要修改工厂类的判断逻辑,违背了开闭原则。 不易于扩展过于复杂的产品结构。 1.4、实例 支付接口规范: public interface

aaa31203的博客 16万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【设计模式】工厂设计模式

1.简单工厂设计模式 代码 Video package Factory.简单工厂; public abstract class Video { public abstract void product(); } JavaVideo package Factory.简单工厂; public class JavaVideo extends Video { public voi...

codeDonald的博客 222

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

设计模式之【工厂模式】详解

工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。通过使用工厂模式,可以将对象的创建逻辑封装在一个工厂类中,而不是在客户端代码中直接实例化对象,这样可以提高代码的可维护性和可扩展性。在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。

Shine19的博客 1143

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

工厂设计模式之——简单工厂设计模式

工厂设计模式分为三类:简单工厂设计模式,工厂方法设计模式,抽象工厂设计模式 工厂设计模式的核心本质: 实例化对象,用工厂方法代替new操作; 将选择的实例化类和创建者进行统一地管理,实现调用者和实现类的解耦操作 也就是说实现分工合作,依赖从具体到抽象,不依赖于具体实现,便于扩展 今天先介绍简单工厂设计模式 简单工厂设计模式是比较常用的工厂设计模式 要求:消费者需要得到两类车:奥迪和比亚迪,用代码实...

educationer的博客 300

C++设计模式 - 简单工厂,工厂方法和抽象工厂

知识的学习在于点滴记录,坚持不懈;知识的学习要有深度和广度,不能只流于表面,坐井观天;知识要善于总结,不仅能够理解,更知道如何表达! 目录 如果需要录屏资料,请私信邮箱shitou3000@qq.com获取。 ...

大秦坑王的专栏 2553

【iOS】——工厂设计模式

这种模式旨在为创建对象提供一个统一的接口,隐藏了创建对象的具体逻辑,使得客户端不需要知道所创建对象的具体类,从而降低了对象之间的耦合度,提高了代码的灵活性和可维护性。它为创建对象提供了一种灵活的方式,让子类来决定实例化哪一个类,从而实现了对象创建的延迟化和抽象化,增强了代码的扩展性和可维护性。车没了,该车的引擎和轮胎自然也没了。当系统中加入新产品时,不需要修改抽象工厂和抽象产品提供的接口,也无须修改客户端和其他的具体工厂和具体产品,而只要添加一个具体工厂和与其对应的具体产品就可以了,符合了“开-闭”原则。

m0_73974920的博客 1676

设计模式——工厂模式

工厂模式 在《Head First 设计模式》一书中,一共介绍了一种类似于工厂模式的编程习惯、两种工厂模式,在这篇文章中,我将对它们分别进行介绍,下面首先来看一下简单工厂。 1、简单工厂 按照惯例,我们应该先介绍一下简单工厂的定义,然后举例说明,这一次,我们不这样做,我们首先举例说明,然后再引出简单工厂的定义,后续两个工厂模式均按此方式进行叙述,从案例中理解模式的定义才能够更加印象深刻。...

记录只为更好地前行 4883

设计模式—工厂设计模式

工厂设计模式1.概述2.简单工厂模式2.1 结构2.2 实现2.3 优缺点2.4 扩展3.工厂方法模式3.1 概述3.2 结构3.3 实现3.4 优缺点4.抽象工厂模式4.1 概述4.2 结构4.3 实现4.4 优缺点4.5 应用场景5.扩展模式5.1 第一步:定义配置文件5.2 改写工厂类6.JDK源码解析—Collection.iterator方法 1.概述 在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需

洛晓关的博客 1463
上一篇: 单例设计模式
下一篇: 原型模式
magicproblem
博客等级 码龄7年 22粉丝 59原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值