设计模式学习2:工厂方法模式

游戏设计模式专栏(一):工厂方法模式 工厂方法模式是游戏开发中常用的设计模式之一,可以帮助我们更好地组织和管理对象的创建过程,提高代码的可维护性和可扩展性。通过遵循这种模式,开发者可以更轻松地适应游戏项目的需求变化,同时保持代码的整洁和可读性。本系列是《和8年游戏主程一起学习设计模式我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。AD:笔者线上的小游戏《贪吃蛇掌机经典》《填色之旅》《重力迷宫球》大家可以自行点击搜索体验。实不相瞒,想要个赞和在看!请把该文章分享。 阅读详情

工厂方法模式是什么?

我的理解:首先,简单工厂模式不是一种常用的模式,扩展性差,基本不使用。工厂方法模式和抽象工厂模式是常用的工厂模式。
工厂方法:实际上就是工厂类的向上转型?类似List<Integer> list = new ArrayList<>();,下面的代码中的 ShapeFactory circleFactory = new CircleFactory();这里的工厂就根据后面的值得到了一个circle的工厂。然后调用工厂中的createShape()创建出对应的实例。

工厂方法模式:

下面的代码以创建不同图形为例

// 抽象类Shape,表示所有类型
public abstract class Shape {
    abstract void  draw();
}
// 子类型circle继承Shape表示它是一个图形,并且实现父类的方法
public class Circle extends Shape{
    @Override
    void draw() {
        System.out.println("Circle");
    }
}
// 和上面一样,创建一个Square
public class Square extends Shape{
    @Override
    void draw() {
        System.out.println("Square");
    }
}

上面创建了两个图形,circle和square,它们都继承自Shape,表示自己是一个图形,并且实现了各自的draw方法(具体业务方法)。
下面是工厂的创建,和上面的代码类似,一个类对应一个相应的工厂,实现createShape方法,返回对应类的实例

//图形总工厂
public abstract class ShapeFactory {
    abstract Shape createShape();
}
// 圆形工厂
public class CircleFactory extends ShapeFactory {
    @Override
    Shape createShape() {
    	// 返回对应的对象
     	return new Circle();
    }
}
// 方形工厂
public class SquareFactory extends ShapeFactory {
    @Override
    Shape createShape() {
     	return new Square();
    }
}

下面就是具体调用


public class Main {
    public static void main(String[] args) {
 		// 这里就像是向上转型(多态)
 		ShapeFactory circleFactory = new CircleFactory();
        // 使用createShape获取对应工厂的对象,然后执行对应业务方法draw
		circleFactory.createShape().draw();
    }
}

抽象工厂模式下篇再说

小谈设计模式(9)—工厂方法模式 对设计模式中工厂方法模式进行详细讲解分析 阅读详情

相关推荐

设计模式之工厂方法模式(Factory Method)

在软件设计中,设计模式是一种常用的解决方案,用于解决在特定情境下遇到的常见问题。设计模式提供了一种最佳实践的编程方式,使得代码更加灵活、可扩展、易于维护。今天我们要讲解的是。

喵手的博客 1029

学习笔记(7):第2章 架构师内功心法之设计模式 -Factory Method Pattern工厂方法模式...

不用设计模式并非不可以,但是用好设计模式能帮助我们更好地解决实际问题,设计模式最重要的是解耦。设计模式天天都在用,但自己却无感知。 我们把设计模式作为一个专题,主要是学习设计模式是如何总结经验的,把经验为自己所用。学设计模式也是锻炼将业务需求转换技术实现的一种非常有效的方式。 本章内容将按照创建型模式(工厂方法模式、抽象工厂模式、单例模式、原型模式、建造者模式)、结构...

weixin_43222122的博客 203

grpc安装与简单demo测试

grpc安装: 由于工作需要,最近在学google的rpc开源框架;由于本人菜鸟一枚,而且是从Windows开发转到Linux;由于之前版本控制使用的是svn,没有使用过git,所以从GitHub上下载代码是通过浏览器下载zip格式的压缩文件,折腾了好几天了,发现了各种坑,各种缺少库,各种不知道怎么把这个库给装机器上。对于一个不熟悉Linux的人来说,这个体验简直糟糕透了。没办法了又在机器上装了...

old__captain的博客 4833

C#设计模式学习笔记:(2)工厂方法模式

本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7567880.html,记录一下学习过程以备后续查用。 一、引言 接上一篇C#设计模式学习笔记:简单工厂模式(工厂方法模式前奏篇),通过简单工厂模式的了解,它的缺点就是随着需求的变化我们要不停地修改工厂里 面的方法的代码,需求变化越多,里面的if–else也越多,这样就会造成简单工厂的实现逻辑过于复杂。 依设计原则里的开闭原则--对增加代码开放,对修改代码关闭,我们不能总是这样修改简单工厂里面的方法。 下面看看工

chinaherolts2008的博客 202

202505系分论文《论软件系统测试方法及应用》

本文以软件测试方法为切入点,重点论述分层协作、智能赋能、全流程三个维度下传统测试与自动化测试的融合应用。

pccai的博客 1693

使用MLP解决OCR问题(OpenCV)(下)

分类模型:        分类模型涉及的一个比较关键的问题就是输出的10维向量是如何与具体的类别挂钩的。实际上:10维向量的每一位都代表一类,在对于训练集的表达中,如果输入数据是0,则10维向量的第一位赋值为1,其余均为0。即0对应[1,0,0,0,0,0,0,0,0,0]。MLP模型训练完成后,就需要对用户输入的数据所属类别进行判定。这时得到的输出数据基本不可能是正好的所属类为1,其他位置为0

qq_18515405的专栏 1906

设计模式学习第四天:2.3工厂方法模式以及演化

一、 工厂方法(Factory Method)模式工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。 工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。 在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创...

weixin_30455023的博客 144

第58篇:AI技术实战:基于深度学习的智能音频内容审核系统

深度学习技术为智能音频内容审核系统提供了强大的支持,通过CNN、RNN和Transformer等模型,能够实现高效的音频内容检测和过滤。使用TensorFlow和Keras可以快速构建和训练音频审核模型,而预训练模型则可以进一步提升性能。数据预处理、特征提取和性能优化是提升智能音频审核系统性能的关键。希望本文的代码示例和注意事项能帮助你更好地理解和应用这些技术。接下来,我们将继续探索更多AI技术实战案例。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 705

CSharp设计模式读书笔记(2):工厂方法模式(学习难度:★★☆☆☆,使用频率:★★★★★)...

工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式又简称为工厂模式(Factory Pattern),又可称作虚拟构造器模式(Virtual Constructor Pattern)或多态工厂模式(Polymorphic Factory Pattern)。 模式角色与结构: ...

weixin_34221036的博客 129

2025年华为杯中国研究生数学建模竞赛A题 通用神经网络处理器下的核内调度问题 思路+代码

针对通用神经网络处理器下的核内调度问题,我们提出了一套基于分层优化框架的系统性解决方案。该方案首先通过缓存敏感的启发式拓扑排序算法生成最小峰值缓存占用的调度序列,在满足计算图依赖关系的前提下优先选择能够释放或减少缓存占用的节点;随后采用最佳适应算法进行精细化的缓存分配,结合LRU换出策略动态管理多级缓存空间,最小化额外数据搬运量;最后引入多目标遗传算法进行联合优化,在严格控制数据搬运量不显著增加的前提下,通过关键路径分析、流水线并行和数据预取等技术进一步优化总执行时间。

YOLO 785

【制作100个Unity游戏之36】用unity从零开始实现类《开心消消乐》的三消类消除解压小游戏

Unity甜品消除游戏开发摘要 本文介绍了使用Unity开发甜品消除游戏的核心实现步骤: 冰块阵列生成 通过GlobalDef定义全局参数(9行7列网格) IceSpawner脚本动态生成网格化冰块阵列 添加Resolution脚本实现多分辨率适配 随机水果生成 创建FruitSpawner作为水果容器 FruitItem脚本管理水果属性(行列索引、类型) 支持动态创建水果精灵并设置位置 关键技术点 使用Instantiate动态生成预制体 通过localPosition精确控制网格布局 分辨率适配算法保持

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1291

JAVA设计模式2:工厂方法模式,将对象的实例化过程封装在子类

本文讲解了 Java 设计模式中的工厂方法模式,并给出了样例代码,工厂方法模式是一种创建型设计模式,它提供了一种将对象的实例化过程封装在子类中的方式。

Designer 小郑的技术博客 1300

Unreal 从入门到精通之VR常用操作

本文总结了使用Unreal5开发VR项目时遇到的常见问题及其解决方案。首先,介绍了如何通过VRPawn的TryTeleport函数设置玩家视角位置,确保头显移动时安全区域的正确传送。其次,详细说明了如何在Unreal中播放视频,包括导入视频文件、创建媒体播放器和媒体纹理,并将其应用到3D物体上。接着,讲解了如何播放VR全景视频,建议使用MediaPlate媒体板并调整几何体为球体。最后,讨论了如何手动打开和关闭VR模式,以便在PC模式和头显模式之间切换。这些方法为VR开发提供了实用的技术指导。

TxNet 951

Spring常用设计模式--工厂方法模式

本专栏内容参考自:咕泡学院Tom老师的《Spring5核心原理与30个类手写实战》,仅作个人学习记录使用,如有侵权,联系速删.   工厂方法模式指定义一个创建对象的接口,但让实现这个接口的类决定实例化哪个类,工厂方法模式让类的实例化推迟到子类中进行。在工厂方法模式中用户只需要关心所需产品对应的工厂,无需关心创建细节,而且加入新产品时符合开闭原则。   工厂方法模式主要解决产品扩展的问题。在上一篇简单工厂模式中,随着产品链的丰富,如果每个课程的创建逻辑都有区别,则工厂的职责会变得越来越多,有点像万能工厂,.

想着百万年薪努力的小赵 3万+

【LAMMPS学习】八、基础知识(4.5)TIP5P水模型

​ 五点 TIP5P 刚性水模型通过添加两个通常无质量的附加位点 L 来扩展three-point TIP3P model,其中放置与氧原子相关的电荷。这些位点 L 位于距氧原子固定距离处,形成从 HOH 平面旋转 90 度的四面角。因此,这些位点在某种程度上近似于氧的孤对,从而改善了水结构,与four-point TIP4P model相比变得更加“四面体”。

荷塘阅色 1421

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

设计模式之工厂方法模式

设计模式是经验总结,是学习软件设计的有效方法,因此,了解和理解现有的设计模式,是提高软件设计的有效途径之一,这里将介绍相关的设计模式,并通过示例了理解其用法。本章主要介绍工厂方法模式并进行示例。

ZhangCurie的博客 515

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

设计模式 Day 2:工厂方法模式(Factory Method Pattern)详解

满足开闭原则:新增产品时只需添加新工厂和产品类,无需改动原有逻辑。屏蔽具体产品类,解耦创建逻辑与使用逻辑。场景原因日志模块支持多种输出方式控制台、文件、网络输出分开实现图像加载库支持多种格式不同格式(PNG/JPEG/GIF)封装为产品类数据库驱动连接MySQL/PostgreSQL/SQLite 等切换方便。

Interview_TC的博客 1173

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

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

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

设计模式学习[7]---工厂方法模式

关于工厂的一些概念,我在1,2两节中有提及,这里不过多数赘述,详情参考下面两篇博客。设计模式学习[1]—开篇词+简单工厂模式设计模式学习[2]—策略模式+简单工厂回顾我们通过工厂方法模式,将不同类型对象的实例化直接交给客户端,从而让底层的代码解耦,满足开放-封闭原则。最近几个模式好像都是涉及到了开放-封闭原则,对于各种原则秉持一个想法:多用,多思考。

Edwinwzy的博客 1110

【C++设计模式】工厂方法模式

学习总结 工厂方法模式的优点: 工厂方法用于创建客户所需产品,同时向客户隐藏某个具体产品类将被实例化的细节,用户只需关心所需产品对应的工厂; 工厂自主决定创建何种产品,并且创建过程封装在具体工厂对象内部,多态性设计是工厂方法模式的关键; 新加入产品时,无需修改原有代码,增强了系统的可扩展性,符合开闭原则。 工厂方法模式的缺点: 添加新产品时需要同时添加新的产品工厂,系统中类的数量成对增加,增加了系统的复杂度,更多的类需要编译和运行,增加了系统的额外开销; 工厂和产品都引入了抽象层,客户端代码中均使

发现问题,并解决问题,批判性思维 1271

Java 工厂方法模式

深入理解 Java工厂方法模式

小凯的博客 1303

设计模式:工厂方法模式

一、引 工厂方法模式光从名字上就和简单工厂模式很相似,其实具体的含义和实现也很相似,只不过工厂方法模式将原本简单工厂模式中的工厂类进行了抽象,具体化了不同操作的工厂类。简单的说,就是依据封闭-开放原则,对简单工厂模式进行了修改。 二、问题 为了能够和简单工厂模式进行比较,这次的问题还是设计一个简单了计算程序。 三、理解 我们用简单工厂模式进行设计, 可以先转至我的另一篇博文,看看简单工厂...

BoCong-Deng的博客 1万+

设计模式系列(05):工厂方法模式(Factory Method)

本文为设计模式系列第5篇,聚焦创建型模式中的工厂方法模式,涵盖定义、原理、实际业务场景、优缺点、最佳实践及详细代码示例,适合系统学习与实战应用。

1300

C# 设计模式之工厂方法模式

C# 设计模式之工厂方法模式

鲤籽鲲的博客 1319
上一篇: 设计模式学习1:单例模式
下一篇: 代码随想录35期Day07-Java
Gohoy
博客等级 码龄4年 271粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值