创建型设计模式之工厂方法模式

gtsam官方文档: The new IMU Factor学习笔记 gtsam官方文档:The new IMU Factor 本文为gtsam imu预积分文档学习笔记,为gtsam基于切向量实现的imu预积分的理论基础。 导航状态 定义导航状态为 Xbn={Rbn,Pbn,Vbn}X^n_b=\{R^n_b,P^n_b,V^n_b\}Xbn​={Rbn​,Pbn​,Vbn​} 上角标n:导航(navigation)坐标系 下角标b:载体(body)坐标系 下文均省略上下标 矢量场与微分方程 对于导航问题我们用如下微分方程描述 X˙(t)=F(t,X)\dot X(t) 阅读详情

一、创建型设计模式概述

创建型设计模式关注对象创建过程,提供更多机制和步骤,能提升项目代码的灵活性和可复用性。

创建型设计模式主要包括:

  • 工厂方法模式:在父类中提供一个创建对象的接口,让子类决定具体实例化什么类型的对象。
  • 抽象工厂模式:可以看作工厂方法模式多一个维度的扩展。

    工厂方法模式通常用来创建一类产品,而抽象工厂模式用来创建一系列相关的产品。

  • 建造者模式(生成器模式):通常应用在复杂对象的构造中,把对象构造的逻辑从他本身的类中抽离出来,让专门的生成器来负责。
  • 原型设计模式:提供了无依赖的对象复制,可以在不了解对象内部细节的情况下对它进行拷贝。
  • 单例模式:可以看作是全局属性的一种面向对象的管理策略,确保单例类只能有一个实例,并且提供了一个可以访问这个对象的全局节点。

二、工厂方法模式

  1. 概念
    • 在父类中提供一个创建对象的接口,让子类决定具体实例化什么类型的对象。
  2. 应用场景示例
    • 游戏中玩家可选择多种武器和装备,每个武器和道具都有不同属性、功能和品质等私有字段。借助武器装备道具工厂对象,根据游戏状态或玩家操作动态创建具体装备对象。
    • 以武器为例,定义武器基类 weapon,有一个纯虚方法 use 代表使用武器的逻辑,派生出剑和弓等子类,各有自己的使用逻辑。不使用设计模式时,子类可直接实例化和使用;使用工厂方法模式时,创建工厂基类,约定所有生成具体武器的工厂都实现 createWeapon 方法对外返回创建后的对象,再实现具体的工厂子类,如生产剑的工厂和生产弓的工厂,通过具体工厂对象创建对应武器产品。
  3. 关键要素
    • 抽象产品:如武器基类,是后续所有创建者及其子类构建对象的通用声明。
    • 具体产品:如剑和弓等具体武器对象,是抽象产品接口的不同实现。
    • 抽象工厂(创建者):不直接进行具体产品创建,负责对创建的接口进行声明,后续所有创建者返回的对象类型都必须与产品接口相匹配。
    • 具体工厂:负责重写抽象工厂的方法,实例化不同的具体产品对象并返回。
  4. 优势
    • 实现客户端与具体产品类的解耦:在游戏开发中,玩家类只需依赖具体的工厂类,无需关注产品类内部实现或构造需求,可独立变更与角色控制相关的玩家类和实现具体功能玩法的武器道具类,对大型项目协作开发尤为重要。
    • 提高系统的可扩展性:游戏中出现新的武器(新产品)时,只需创建新的具体工厂类,无需改变角色代码或已有的工厂方法。
    • 封装复杂对象的创建逻辑:实际项目中具有特定功能的游戏对象往往需遵循一定规则进行构造和初始化,工厂类可将这些任务屏蔽在自身内部,无需让玩家角色类关注。
    • 遵循面向对象的开闭原则和单一职责原则:可轻松扩展而无需修改已有内容,武器的创建和使用分属不同步骤和职责,应拆分到不同类中管理。
    • 集中产品对象创建逻辑:把产品对象所有的创建逻辑集中到一起,避免将武器对象的构造和初始化散落在玩家类各处,方便统一管理,需求变更时无需在玩家逻辑内部到处翻找代码。
    • 创建不同的产品组:如跨平台的 GUI 应用,不同平台分属于不同的工厂家族,每个工厂家族中又有按钮、文本框等不同产品,相关逻辑在抽象工厂模式中会更细致讲述。
  5. 实际应用场景
    • 日志系统:大型项目中,不同级别的日志常需不同的输出接口(如打印到控制台、输出到文件、通过网络传输远程监控调试、存储到数据库等),通过工厂方法模式,无需关心日志的具体输出逻辑,通过工厂的统一接口管理日志输出对象。
    • 数据库的连接驱动:不同应用场景或设备环境下,需将应用连接到不同的数据库,可通过工厂方法获取数据库连接,无需关注具体的数据库类型,还可通过配置文件、环境变量等动态感知选择不同的数据库。
    • 文档生成:大型系统的文档手册通过自动化工具配合注释自动化生成导出,通过对具体导出工具对象的屏蔽,可灵活实现 HTML 或 markdown 等不同格式的文档文件。
  6. 缺点
    • 添加了工厂层的抽象,引入过多的类,在对简单系统、简单对象的创建时有过度设计的嫌疑。
    • 过多的工厂类会掩盖整个系统的创建逻辑,不利于阅读和理解。
    • 单独的工厂方法模式在面对存在组合关系的产品时,显得不够灵活,需要使用抽象工厂模式。
PyCharm高效配置Gitee全攻略 本文介绍了如何在PyCharm和VS Code中配置Gitee插件并管理代码。主要内容包括:1) PyCharm连接Gitee的配置步骤;2) 代码拉取与冲突解决方法;3) VS Code界面功能区域详解;4) 完整的代码提交流程(暂存→提交→推送)。特别说明了VS Code中Git面板的使用方法,以及推送代码到Gitee远程仓库的具体操作步骤。文章还提供了解决代码冲突的建议和注意事项,帮助开发者更好地进行版本控制。 阅读详情

相关推荐

K8s私有仓库拉取镜像报错解决:x509 certificate signed by unknown authority

在Kubernetes环境中使用自签名证书的私有Harbor镜像仓库时,常会遇到证书验证失败的问题。本文将详细讲解如何解决这个常见的证书问题。Kubernetes版本:1.28.2容器运行时:containerd 1.6.20私有仓库:Harbor(使用自签名证书)(超简单搭建私有仓库Harbor-亲测无坑解决K8s私有仓库证书问题的关键在于正确配置容器运行时(本例中是containerd)信任私有仓库的证书。

lzz的博客 2140

创建型设计模式(3)—— 工厂方法模式(Factory Method Pattern)

1.概述使用设计模式可以提高代码的可复用性、可扩充性和可维护性。工厂方法模式(Factory Method Pattern)属于创建型模式,定义一个创建对象的接口,但由子类决定实例化某一个类,让工厂类把实例化推迟到子类。在前面的设计模式(四)——简单工厂模式中我们介绍了简单工厂模式,接下来将介绍下工厂方法模式,它同样是创建型设计模式,有相似之处,但又有些不同,文章的末尾会介绍他们之间的不同。这里借用...

Doublelv 的博客专栏。 1818

Unity中实现HLS视频加密与流式播放的完整方案

本文详细介绍了在Unity中实现HLS视频加密与流式播放的完整方案。针对Unity原生VideoPlayer无法直接支持实时解密的问题,提出了基于HLS协议与AES-128加密的成熟解决方案,并重点阐述了如何利用AVPro Video插件进行集成。文章涵盖了从密钥生成、使用FFmpeg进行视频加密切片,到在Unity中动态加载密钥并播放加密流的全流程,为保护付费课程、独家动画等视频内容提供了安全且高效的实践路径。

weixin_29290963的博客 393

【C#设计模式】4.工厂方法模式(Factory Method Pattern)【创建型】

随着需求的变化我们要不停地修改工厂里面的方法的代码,需求变化越多,里面的If–Else–也越多,这样就会造成简单工厂的实现逻辑过于复杂。设计模式是遵循一定原则而得来的,比如,我们要怎么增加代码,怎么修改代码,不是想怎么来就怎么来的,其中一个原则就是OCP原则,中文是【开放关闭原则】,对增加代码开发,对修改代码关闭,所以我们就不能总是这样修改简单工厂里面的方法。......

星Yeah 的博客 4227

FPGA&ASIC笔面试题(四):编写Verilog代码描述跨时钟域信号传输,快时钟域到慢时钟域(补充)

      跨时钟域处理从快时钟域到慢时钟域,如果是下面第一个图,cklb则可以采样到signal_a_in,但是如果只有单脉冲,如第二个图,则不能确保采样掉signal_a_in。这个时候用两级触发器同步是没有用的。 代码如下: //Synchronous module Sync_Pulse( input clka, input clkb, input rst_n, input pulse_ina, output pulse_outb, ou

千歌叹尽执夏的博客 2509

华为OD机试 新系统 双机位C卷 往年真题 机考题库(持续收录中)以及算法考点详解

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 7万+

设计模式 - 创建型 - 工厂方法模式(Factory Method Pattern)

工厂方法模式是一种创建型设计模式,通过抽象工厂接口将对象创建延迟到子类,实现创建与使用逻辑的解耦。该模式符合开闭原则,支持动态扩展,但会增加类数量。核心结构包括抽象产品、具体产品、抽象工厂和具体工厂四个角色。相比简单工厂模式,工厂方法模式更灵活但更复杂,适用于日志系统、框架设计等需要多态创建的场景。示例展示了如何用Java实现该模式,通过子类工厂创建具体产品。该模式提升了系统扩展性,但需根据实际需求权衡使用。

csdn_tom_168的博客 920

YOLOv8交通监控全方案:精准车辆计数+违章(闯红灯/压线)识别,拿来就落地!

作为深耕计算机视觉落地的开发者,我见过太多交通监控的“伪智能”——传统系统要么车辆计数不准(漏计/重复计数),要么违章识别滞后(靠人工回看录像),甚至连“闯红灯、压线”这类常见违章都无法实时判定,完全满足不了实际交通管理需求。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 646

Java GoF 23种设计模式-创建型模式-工厂方法模式(Factory Method Pattern)

文章目录一、模式定义二、模式动机三、模式结构四、代码实现五、缺点 一、模式定义 工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于创建型模式。 在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。 工厂方法模式

WU4566285的博客 432

【AI大模型:前沿】44、大模型+机器人:从自动化工具到通用智能体的技术革命与应用全景

大模型与机器人的融合催生了“具身智能体”,突破传统机器人智能化缺失、功能单一等瓶颈。大模型赋予机器人三大能力:常识推理(如热牛奶需去包装)、模糊指令解析(如“整理书桌”拆解步骤)、零样本任务泛化(如搭乐高桥)。技术实现上,通过多模态融合(视觉-语言-动作)、仿真训练(虚拟试错)和实时反馈(动态调整动作)形成闭环。主流框架如Google RT-2(端到端动作生成)、斯坦福Q-Transformer(强化学习优化)和Figure 01(ChatGPT驱动人形机器人)各具优势,可适配工业、家庭等场景。该技术正重塑

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 2017

【气候极端指数】MATLAB计算各种气候极端指数

简介各类气候极端指数,及其MATLAB计算代码

WW、forever的博客 4917

C#设计模式之二工厂方法模式(Factory Method Pattern)【创建型】

C#设计模式之二工厂方法模式(Factory Method Pattern)【创建型】 原文:C#设计模式之二工厂方法模式(Factory Method Pattern)【创建型】 一、引言 在上一篇文章中我们讲解了过渡的一种模式叫做【简单工厂】,也有叫【静态工厂】的,通过对简单工厂模式得了解,我们也发现了它的缺点,就是随着需求的变化我们要不停地修改工厂里面的方法的代码,需求变...

LJianDong的博客 683

Docker(八):Docker Compose(容器编排) 管理多容器应用—实战案例演示

🟢 Docker(八):Docker Compose(容器编排) 管理多容器应用—实战案例演示

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 6万+

创建型设计模式: 工厂方法模式(Factory Method Pattern)

设计模式;结构型模式;创建型设计模式;工厂方法模式(Factory Method Pattern)又名虚构造器(Virtual Constructor),主要是为创建对象提供了接口,是代替new操作的一种模式。工厂方法模式属于创建型模式,创建型模式包括FactoryMethod模式,AbstractFactory模式,Singleton模式,ProtoType模式和Builder模式。

智能多媒体 824

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...

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

设计模式之创建型:工厂方法模式

工厂方法模式是一种创建型设计模式,它定义了一个创建对象的接口,但将具体实例化工作推迟到子类中,使得子类可以决定实例化哪个类。该模式通过继承实现对象创建的解耦,遵循“依赖倒置原则”和“开闭原则”。​。

keep simple 771

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

设计模式——工厂方法模式(创建型)

设计模式之工厂方法模式(创建型模式)

大猩猩的博客 880

老版QQ原生表情gif动态

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

设计模式-创建型模式之工厂方法模式(Factory Method Pattern)

设计模式-创建型模式之工厂方法模式(Factory Method Pattern)

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 715

23天读懂23种设计模式:工厂方法模式(创建型)

点击上方 蓝字 关注我们创建型模式是用来创建对象的模式,抽象了实例化的过程,帮助一个系统独立于其他关联对象的创建、组合和表示方式。工厂方法模式目的:封装构造对象具体过程,解耦客户端与构造...

Diligence is the mother of success. 275

设计模式 - 创建型模式_工厂方法模式

优秀的代码在结构设计上松耦合易读易扩展,在领域实现上⾼内聚不对外暴漏实现细节不被外部⼲扰。⼯⼚模式⼜称⼯⼚⽅法模式,是⼀种创建型设计模式,其在⽗类中提供⼀个创建对象的⽅法, 允许⼦类决定实例化对象的类型。它的主要意图是定义⼀个创建对象的接⼝,让其⼦类⾃⼰决定实例化哪⼀个⼯⼚类,⼯⼚模式使其创建过程延迟到⼦类进⾏。优点: 简单说就是为了提供代码结构的扩展性,屏蔽每⼀个功能类中的具体实现逻辑。让外部可以更加简单的只是知道调⽤即可,同时,这也是去掉众多 ifelse 的⽅式。

小工匠 2万+

设计模式:创建型模式--工厂方法模式(Factory Method Pattern)

设计模式:创建型模式–工厂模式(Factory Pattern) 文章目录设计模式:创建型模式--工厂模式(Factory Pattern)1. 引入2. 简单工厂模式2.1 组成结构2.2 实现细节2.3 优缺点2.4 扩展实现3. 工厂模式3.1 概念3.2 组成结构3.3 实现细节3.4 优缺点 本文章中将介绍两种工厂模式: 简单工厂模式(Simple Factory Pattern)(不属于GOF的23种经典设计模式)。 工厂方法模式(Factory Pattern)。 工厂模式(Factor

ZZay's 510

创建型设计模式--工厂方法模式

创建型设计模式是解决对象创建机制的设计模式. 该类设计模式试图根据具体的情况,以适当方式创建对象. 工厂方法的功能: 选择一个类 创建该类的对象 以父类的类型返回该对象 不做其他事情 简单工厂方法模式理论与设计例子(汽车保险介绍程序)静态 GUI的全称为Graphical User Interface,图形化界面或图形用户接口,是指采用图形方式显示的计算机操作环境用户接口。 蓝色的实线代表关联:它使被关联类以类属性的形式出现在使用类中.箭头指向被关联类. PolicyProdu..

qq_58665528的博客 176

工厂方法模式_Java设计模式创建型:工厂方法模式

生命不止需要长度,更需要宽度。※引导语在工厂方法模式中,不再由单一的工厂类生产产品,而是由工厂类的子类实现具体产品的创建。因此,当增加一个产品时,只需增加一个相应的工厂类的子类,实现生产这种产品,便可以解决简单工厂生产太多产品导致其内部代码臃肿(switch …case分支过多)的问题,也符合开闭原则。01工厂方法模式是什么定义工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一...

weixin_39972741的博客 75

【设计模式·创建型】工厂方法模式Factory Method Pattern

目的 定义了一个接口用于创建对象,该模式由子类决定实例化哪个工厂类。该模式把类的实例化延迟到了子类。 优点 (1)调用者想创建对象,只需知道对象名称 (2)扩展性强,如需增加一个产品,只需要扩展一个工厂类。 (3)调用者只要了解产品的接口,无需了解产品的具体实现。 缺点 每增加一个产品,就要对应增加一个具体类和对象实现工厂,增加了系统复杂度 应用场景 (1)父类利用子类指定创建对象 (2)父类不清楚它所要建立的对象类

深漂小码哥 314

设计模式—创建型—工厂方法模式—多个工厂方法模式

概述 多个工厂方法模式,属于工厂方法模式中的一种。它是一种创建型模式。是对普通简单工厂模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象. 思考 1.修改GunFactory.java 2.修改MultiFactoryTest.java 代码实践 修改GunFactory.java pub

点滴积累 482

Java设计模式-创建型设计模式-工厂方法模式(工厂模式)

Java设计模式-创建型设计模式-工厂方法模式(工厂模式)

Fatter$hday的博客 990

【设计模式】创建型-工厂方法模式

文章摘要:工厂方法模式是一种创建型设计模式,通过将对象创建推迟到子类实现解耦。其核心包含抽象产品、具体产品、抽象工厂和具体工厂四个角色,符合开闭原则,支持灵活扩展。文章以Java日志记录器为例展示了实现过程,包括定义接口、实现具体类和客户端使用。该模式适用于产品类型易扩展的场景(如框架扩展、插件开发等),但需注意避免过度设计。与简单工厂相比,工厂方法模式更符合单一职责原则,但会增加类数量。理解这种模式有助于提升代码的可维护性和扩展性。

大志的学习笔记 476
上一篇: 设计模式学习笔记(一)——六大设计原则
下一篇: 创建型设计模式之抽象工厂模式
WDaMu
博客等级 码龄4年 27粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值