工厂模式

AI Agent在营销领域的实战策略 本文从第一性原理出发,系统性拆解AI Agent在营销领域的落地逻辑、技术架构、实现方案与实战策略。全文覆盖从基础概念到高级优化的全层级知识:底层理论层面推导营销Agent的效用函数与决策框架;技术架构层面提出"感知-记忆-规划-行动-反思"五组件可落地架构;实践层面提供生产级代码实现、多行业案例与ROI提升方法论;前沿层面探讨多Agent协同、世界模型仿真等下一代技术方向。 阅读详情

介绍

工厂模式就是对简单工厂的再次抽象,主要功能是让父类在不知道具体实现的情况下,完成自身的功能调用;而具体的实现延迟到子类来实现,在简单工厂中factory承担了所有产品的加工细节,那么工厂模式不考虑具体加工的实现,而是将细节实现交给子类,而自身只负责对子类的管理

具体实现

角色划分

ProductApi:生产者API,用于定义生产者的行为规范,即抽象接口

ConcreteProduct:生产者角色,具体已经实现接口的生产者

ProductFactory:抽象的工厂,根据参数创建具体的工厂

ConcreteFactory:具体的工厂,只负责具体的某个生产者的加工

Client:消费者,需要使用具体的某个生产者

代码实现

ProductApi类(程序员接口)

public interface Programmer {
    void dayLife();
}

ProductRole(程序员1和程序员2)

public class Programmer1 implements Programmer{

    @Override
    public void dayLife() {
        System.out.println("程序员1:起床-敲代码-吃饭-睡觉");
    }
}
public class Programmer2 implements Programmer{

    @Override
    public void dayLife() {
        System.out.println("程序员2:起床-敲代码-吃饭-陪女朋友逛街-睡觉");
    }
}

ProductFactory(抽象的程序员工厂)

public abstract class ProgrammerFactory {
    public abstract Programmer getConcreteProgrammer();
    
    public Programmer getProgrammer() {
        Programmer programmer = null;
        // 所有工厂都需要的前缀统一加工
        programmer = getConcreteProgrammer();
        // 所有工厂都需要的后缀统一加工
        return programmer;
    }
}

ConcreteFactory(具体的工厂)

public class Programmer1Factory extends ProgrammerFactory {
    @Override
    public Programmer getConcreteProgrammer() {
        // 一系列加工......
        return new Programmer1();
    }
}
public class Programmer2Factory extends ProgrammerFactory {
    @Override
    public Programmer getConcreteProgrammer() {
        // 一系列加工......
        return new Programmer2();
    }
}

Client(用于测试的消费者1)

public class Client1 {
    public static void main(String[] args) {
        ProgrammerFactory programmerFactory = new Programmer1Factory();
        Programmer programmer = programmerFactory.getProgrammer();
        programmer.dayLife();
    }
}

在这里插入图片描述

优缺点

优点

解决了简单工厂的缺陷,形成了以继承为体系的工厂结构,便于对各个工厂进行管理,如果后续新增一个产品,只需要你再添加一个工厂类并继承抽象的工厂然后编写新工厂的加工过程就完事了

简单两句话:可以在不知具体实现的情况下编程,更容易扩展新产品

缺点

引入抽象工厂和大量的工厂类,增加系统复杂度,事实上设计模式很多都是以复杂度换取扩展性

注意点

当工厂模式没有上述代码中的前缀加工和后缀加工,所有的加工过程都只交给子类,那么事实上工厂模式就退化成了多个简单工厂而已

使用时机

  • 如果一个类需要创建某个接口的对象,但是又不知道具体的实现,这种情况可以选用工厂方法模式,把创建对象的工作延迟到子类中去实现
  • 如果一个类本身就希望由它的子类来创建所需的对象的时候,应该使用工厂方法模式

总的来说工厂模式重视抛开类的创建的具体实现过程与细节,把这个操作抛给它的子类去实现

JDK源码分析

在JDK中就有这样一个类使用工厂模式,就是java.util.Calendar日期类,截取一部分方法

在这里插入图片描述

图中Builder是Calendar的内部类,Calendar是一个抽象类,它的具体实现抛给了子类,这里Calendar就是我们所说的工厂类中的抽象的那一层,它的子类就是生产不同Calendar的具体的工厂,Calendar的一系列方法包括Builder内部类都是为了生产Calendar而提供的

2025年华为杯中国研究生数学建模竞赛C题 围岩裂隙精准识别与三维模型重构 思路+代码 report += f"**位置 {i+1}**: ({loc[0]:.1f}, {loc[1]:.1f}, {loc[2]:.1f})\n"# ==================== 高级U-Net模型 ====================# ==================== 数据预处理与增强 ====================# ==================== 采样方法比较分析 ==================== 阅读详情

相关推荐

Allegro 16.6 高级技巧实战:用Region规则和动态间距搞定高密度连接器布局布线

本文深入探讨了Allegro 16.6在高密度连接器布局布线中的高级技巧,重点介绍了Region规则和动态间距属性的应用。通过局部规则覆盖和分层控制,解决0.5mm以下引脚间距的布线难题,提升PCB设计效率和质量。

weixin_30352645的博客 439

工厂方法模式

工厂方法模式 什么是工厂方法模式 工厂方法模式使用的频率非常高, 在我们日常的开发中总能见到它的身影。 其定义为: Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantia...

牵着蜗牛_去散步 268

西门子PLC新手必看:200SMART与1200/1500的MODBUS RTU通讯实战(附完整配置流程)

本文详细解析了西门子PLC中S7-200 SMART与S7-1200/1500之间实现MODBUS RTU通讯的完整实战流程。内容涵盖硬件接线、软件配置及程序编写,重点讲解了200SMART作为从站、1200/1500作为主站的典型架构,并提供了关键功能块的使用方法和常见问题排查技巧,帮助新手快速打通不同系列PLC间的数据交换。

weixin_29214559的博客 397

简单工厂模式

介绍 简单工厂模式事实上并不属于23种设计模式中的任何一个模式,但是它的工厂思想是有关工厂的基本思想,这个思想也是非常常用的,了解了它之后我们会对工厂模式有更深的理解 具体实现 工厂角色 ProductApi:生产者API,用于定义生产者的行为规范,即抽象接口 ConcreteProduct:具体的生产者角色,具体已经实现接口的生产者 Factory:工厂,根据参数创建具体的生产者角色 Client:消费者,需要使用具体的某个生产者 代码实现 以程序员的一天为例代码实现 ProductApi类(程序员接口)

GHSTART的博客 191

Intel Arc显卡玩《三角洲行动》报错?手把手教你修改注册表跳过验证

本文针对Intel Arc显卡用户在运行《三角洲行动》时遇到的驱动验证报错问题,提供了详细的解决方案。通过安全修改Windows注册表,添加特定键值以跳过游戏驱动兼容性验证,并结合游戏内图形设置与Intel驱动面板的优化建议,旨在帮助玩家顺利进入游戏并提升游戏帧率与运行稳定性。

weixin_29310605的博客 696

SimpleFOC STM32实战:基于F103与HAL库,剖析速度环与电流环的协同控制

本文详细介绍了基于STM32F103与HAL库的SimpleFOC实战应用,重点剖析速度闭环控制与电流环的协同工作原理。通过开发环境搭建、参数调试技巧及性能优化方案,帮助开发者高效实现无刷电机精准控制,适用于机器人、无人机等高精度应用场景。

weixin_29170327的博客 476

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

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

m0_65260253的博客 2万+

告别底噪和发热:TPA3255的PCB布局与散热设计保姆级教程(附嘉立创EDA文件)

本文详细解析TPA3255 Class D音频功放的PCB布局与散热设计,提供从电源系统分层架构到热管理系统的全流程优化方案。通过实战案例展示如何消除底噪、降低发热,并附嘉立创EDA文件,助力工程师快速设计高性能音频功放。

weixin_29208077的博客 376

工厂模式及什么时候用工厂模式

在设计模式中,Factory   Method也是比较简单的一个,但应用非常广泛,EJB,RMI,COM,CORBA,Swing中都可以看到此模式的影子,它是最重要的模式之一.在很多地方都会看到xxxFactory这样命名的类     Factory  Method是一种创建性模式,它定义了一个创建对象的接口,但是却让子类来决定具体实例化哪一个类.当一个类无法预料要创建哪种类的对象或是一个

人工智能的专栏 1万+

cdk&java | 分子sdf文件生成

sdf

ASKCOS博客 1089

“华为杯”研究生数学建模竞赛2017年-【华为杯】B题:面向下一代光通信的 VCSEL 激光器仿真模型

得出以下主要结论:在相同的偏置电流条件下,随着温度的升高,带宽的峰值向。在相同的温度下,随着电流的增大,带宽的峰值越小且曲线由波峰形状。方案,包括可能的数学公式,不同温度和偏置电流下的带宽响应曲线,并与问题。线,得出以下主要结论:在相同的偏置电流条件下,随着温度的升高,带宽的峰。在相同的温度下,随着电流的增大,带宽的峰值越小且曲线由波峰形状逐渐变得。得的激光器特性曲线和模型中仿真得到的特性曲线,之后,可以将两组曲线的差。说明的是,由于数值优化算法的成功与否很大程度上依赖于初始参数的猜测,参。

getusushu的博客 98

工厂模式(简单工厂模式+工厂模式)

工厂模式的在没有工厂模式的时候就是,客户需要一辆马车,需要客户亲自去创建一辆马车,然后拿来用。

m0_62645012的博客 1552

R语言广义加型模型(GAM)的运用例子及实现教程

一旦拟合了广义加型模型,我们可以查看模型摘要和诊断,以评估模型的质量和拟合情况。# 查看模型摘要响应变量:mpg(汽车的燃油效率)拟合函数:mpg ~ s(hp) + s(wt)

Mrrunsen的博客 3446

工厂模式与抽象工厂模式

工厂模式 模式定义: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟到子类 作用:实现了创建者和调用者的分离 详细分类:  简单工厂模式  工厂方法模式  抽象工厂模式 核心本质:  实例化对象不使用new,用工厂方法代替  将选择实现类,创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。 三种模式: ◆简单工厂模式  用来生产同一等级结构中的任意产品(对于增加新的产品,需要修改已有代码),不满足开闭原则 ◆工厂方法模式  用来生产同一等级结构

qq_41784749的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

什么是工厂模式

  创建型设计模式中的工厂模式可以细分为三种:分别是简单工厂模式、工厂方法模式、抽象工厂模式。下面通过一些例子更加形象的理解工厂上述三种模式。 简单工厂模式 定义:在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。   简单工厂模式属于类的创建型模式,又叫做静态工厂模式。通过专门定义一个工厂类来负责创建其它类的实例,被创建的实例通常都具有共同的父类。需要注意的是,简单工厂模式并不...

深度学习炼丹炉 3547

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

简单工厂模式,工厂方法模式,抽象工厂模式

简单工厂模式 工厂方法模式 抽象工厂模式

GeorgeGuoo的博客 2615

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

设计模式之简单工厂模式、工厂模式和抽象工厂模式

简单工厂模式、工厂模式和抽象工厂模式 1. 简单工厂模式 简单工厂模式属于创建型模式,是工厂模式的一种。简单工厂模式定义了一个创建对象的类,由这个类来封装实例化对象的行为。它是由一个工厂对象决定创建出哪一种产品类的实例。 简单工厂模式是工厂模式中最简单使用的模式。 简单工厂模式的三个角色 Factory(工厂角色) :简单工厂模式的核心,它负责实现创建所有实例的内部逻辑,根据调用时传入的参数,从而创建不同的对象。 Product(抽象产品角色) :简单工厂模式中所创建所有对象的父类,负责描述所以产品

JustToFaith 2169

简单工厂模式、工厂模式以及抽象工厂模式

工厂方法模式:工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。一、简单工厂模式:实例化对象的时候不再使用 new Object()形式,可以根据用户的选择条件来实例化相关的类。对于客户端来说,去除了具体的类的依赖。只需要给出具体实例的描述给工厂,工厂就会自动返回具体的实例对象。具体实现如下:1. 定义一个操作接口:}2. 定义具体的操作类:// 加法计算}}// 减法计算。

m0_51797179的博客 797

设计模式——工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)

声明: 本博客名词定义等内容和图多是参考C语言中文网。 主要记录学习以下内容: 一、简单工厂模式 二、工厂方法模式 三、抽象工厂模式 工厂模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作放到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。 按实际业务场景划分,工厂模式有 3 种不同的实现方式,分别是简单工厂模式、工厂方法模式和抽象工厂模式。 一、简单工厂模式 1.与简单工厂模式有关的基本概念 我们把被创建的对象称为“产品”,把创建产品的对象称为“工厂”。如果要创建

yi_chengyu的博客 1720

简单工厂模式、工厂模式、抽象工厂模式、工厂方法模式

工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类,这使得创建对象的过程与使用对象的过程实现了分离。一句话概括工厂模式简单工厂:一个具体工厂类,一个产品抽象类。普通工厂:多个具体工厂类,一个产品抽象类。抽象工厂:多个具体工厂类,多个产品抽象类。生活中的工厂模式简单工厂:一个鼠标工厂,只生产鼠标(可以是不同品牌)。普通工厂:多个不同品牌的鼠标工厂,只生产鼠标。抽象工厂:多个不同品牌的 PC 工厂,即可以生产鼠标、又可以生产键盘。简单工厂模式、普通工厂模式、抽象工厂模式的关联。

干就完了!!! 1034

工厂模式及简单的工厂模式详解

工厂模式 实现了创造者和调用者的分离 核心本质 实例化对象用工厂方法代替new操作 将选择实现类。创建对象统一管理和控制。从而将调用者跟我们的实现类解耦 详细分类 简单工厂模式 用来生产同一等级结构中的任意产品。(对于增加新的产品,需要修改已有代码) 工厂方法模式 用来生产同一等级结构中的固定产品。(支持增加任意产品) 抽象工厂模式 用来生产不同产品族的全部产品。(对于增加新的产品,无能为力,支持...

蔡茂的博客 1115

工厂模式与代理工厂模式

一 ,工厂模式           工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。        由于工厂模式较为简单,就不进行详细的解释,文章中直接进行代码的演示举例,同学们有兴趣可以在这里看看...

南城渔客 3417

设计模式之工厂模式(简单工厂、工厂方法、抽象工厂)

其他实现原理和流程同工厂方法模式。只不过抽象工厂中包含很多个具体的功能,是一个超级工厂父类。:实例化具体对象不需要关系具体细节,直接根据参数从工厂索要即可,初步实现了责任的分离。,即工厂方法模式是一个产品系列一个工厂类,而抽象工厂模式是多个产品系列一个工厂类。既保留了简单工厂的优点,同时又解决了简单工厂的缺点。(因为工厂类定义了一个静态方法)相对于工厂方法模式来说,就是。

weixin_43287459的博客 1213

设计模式——工厂模式、简单工厂模式、工厂方法模式

何为工厂模式? 顾名思义就是一个工厂,只不过这个工厂是用来创建对象的。 为什么需要工厂模式? 工厂是为了客户提供已经完成的产品,所以对客户是隐藏细节的,试想,如果我们有一个客户需要一台手机,而我们能够提供iphone、华为、三星,那么关系就如下图: 使用伪代码实现如下: interface Phone{ //TODO } class iPhone implements Phone{ ...

ACE的博客 1046
上一篇: 简单工厂模式
下一篇: 抽象工厂模式
荼锦AI编程
博客等级 码龄7年 198粉丝 27原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值