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

简单工厂模式(Simple Factory Pattern)

简单工厂模式的核心思想是通过一个工厂类,根据提供的参数来决定创建哪一个具体的产品类实例
这个模式通常用于产品种类较少,且不经常变化的场景。

interface Product {void create();
}class ProductA implements Product {@Overridepublic void create() {System.out.println("我是产品A");}
}class ProductB implements Product {@Overridepublic void create() {System.out.println("我是产品B");}
}// 工厂类
class Factory {// 一个方法,根据类型返回不同的实例public Product getProduct(int type) {switch (type) {case 1:return new ProductA();case 2:return new ProductB();default:return null;}}
}

核心点:通过一个工厂类来根据外部传入的参数,返回不同类型的产品实例。
缺点:简单工厂模式初期非常方便,但它会导致工厂类过于庞大,且不易扩展。

工厂方法模式(Factory Method Pattern)

简单工厂模式的基础上进行的改进。它将产品的实例化过程从工厂类中抽离出来,交由具体的子类来实现,达到了更加灵活和可扩展的效果。

// 将原本的工厂类抽象乎或者做成接口
abstract class Factory {// 由子类实现具体的产品创建abstract Product getProduct();
}// 子类来实现生产不同的产品
class ConcreteFactoryA extends Factory {@Overridepublic Product getProduct() {return new ProductA();}
}// 子类来实现生产不同的产品
class ConcreteFactoryB extends Factory {@Overridepublic Product getProduct() {return new ProductB();}
}

核心点:将产品的实例化逻辑从工厂类中抽象出来,由具体的子类来实现。
优点:新产品的添加变得更加灵活,扩展性更强。引入新产品时,只需要创建新的具体工厂类,而不需要修改原有的代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/61369.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【HOT100第四天】除自身以外数组的乘积,矩阵置零,螺旋矩阵,旋转图像

今天感觉是边界值练习专场。。。整体难度不大但是细节还是需要多动手写一写。 238. 除自身以外的数组的乘积 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意…

百度智能云千帆大模型平台引领企业创新增长

本文整理自百度世界大会 2024——「智能跃迁 产业加速」论坛的同名演讲。 更多大会演讲内容,请访问: https://baiduworld.baidu.com 首先,跟大家分享一张图,这个是我们目前大模型应用落地的场景分布。可以看到,大模型…

记录java Collections.sort踩的坑

前言 java Collections.sort 排序失效?为什么会排序失效呢? 需求和问题 需求:获取指定文件夹下的所有文件,并且按照修改时间顺序从大到小排序,如果修改时间相同,则按照创建时间从大到小排序 // 输入lis…

【Flutter 问题系列第 84 篇】如何清除指定网络图片的缓存

这是【Flutter 问题系列第 84 篇】,如果觉得有用的话,欢迎关注专栏。 博文当前所用 Flutter SDK:3.24.3、Dart SDK:3.5.3,网络图片缓存用的插件 cached_network_image: 3.4.1,缓存的网络图像的存储和检索用…

SIMCom芯讯通A7680C在线升级:FTP升级成功;http升级腾讯云对象储存的文件失败;http升级私有服务器的文件成功

从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…

uniapp实现中英文切换

home.js const data {ZH: {content1: "苹果",},EN: {content1: “Apple”,} } export default dataindex.js import home from "./home.js" export default {home }en.js import part1 from ./data/part1/index.js const en {language: {name: "…

Android Studio 控制台输出的中文显示乱码

1. Android Studio 控制台输出的中文显示乱码 1.1. 问题 安卓在调试阶段,需要查看app运行时的输出信息、出错提示信息。乱码,会极大的阻碍开发者前进的信心,不能及时的根据提示信息定位问题,因此我们需要查看没有乱码的打印信息。…

基于yolov8、yolov5的行人检测识别系统(含UI界面、训练好的模型、Python代码、数据集)

摘要:行人检测在交通管理、智能监控和公共安全中起着至关重要的作用,不仅能帮助相关部门实时监控人群动态,还为自动化监控系统提供了可靠的数据支撑。本文介绍了一款基于YOLOv8、YOLOv5等深度学习框架的行人检测模型,该模型使用了…

Java安全—log4j日志FastJson序列化JNDI注入

前言 log4j和fastjson都是这几年比较火的组件,前者是用于日志输出后者则是用于数据转换,今天我们从源码来说一下这两个组件为何会造成漏洞。 实验环境 这里的idea要进行一下配置,因为我们要引用第三方组件,而这些第三方组件都是…

【白话机器学习系列】白话 Softmax

文章目录 什么是 SoftmaxSoftmax 函数详解示例编程实现对矩阵应用 Softmax 函数 什么是 Softmax Softmax 函数,又称归一化指数函数,它使用指数函数将输入向量归一化为概率分布(每一个元素的范围都在 ( 0 , 1 ) (0,1) (0,1) 之间,…

C++系列之继承

💗 💗 博客:小怡同学 💗 💗 个人简介:编程小萌新 💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞 继承的概念 继承机制是面向对象程序设计使代码可以复用的最重要的手段&#xf…

【微软:多模态基础模型】(5)多模态大模型:通过LLM训练

欢迎关注[【youcans的AGI学习笔记】](https://blog.csdn.net/youcans/category_12244543.html)原创作品 【微软:多模态基础模型】(1)从专家到通用助手 【微软:多模态基础模型】(2)视觉理解 【微…

数字IC后端低功耗设计实现案例分享(3个power domain,2个voltage domain)

下图所示为咱们社区T12nm A55低功耗实现项目。其实这个项目还可以根据产品的需求做一些改进。改进后项目实现的难度会大大增加。也希望通过今天的这个项目案例分享,帮助到今年IC秋招的同学。 芯片低功耗设计实现upf编写指南(附低功耗项目案例&#xff0…

Vue3中使用:deep修改element-plus的样式无效怎么办?

前言:当我们用 vue3 :deep() 处理 elementui 中 el-dialog_body和el-dislog__header 的时候样式一直无法生效,遇到这种情况怎么办? 解决办法: 1.直接在 dialog 上面增加class 我试过,也不起作用,最后用这种…

HTTP CRLF注入攻击

HTTP CRLF注入攻击 大家好,今天我们来聊聊一个与网络安全相关的重要话题——CRLF注入(CRLF Injection)。了解这种安全漏洞有助于我们更好地保护我们的应用程序和用户数据。 什么是CRLF? CRLF代表Carriage Return (回车) 和 Line…

免费实用的图片加水印工具

高度自定义的图片加水印工具 因工作需要和朋友的需求,我基于canvas开发了这款图片加水印工具。 地址:https://potatotools.top/toolsEntrance/pic/ImageWatermark.vue.html 功能亮点 尺寸定制 ,轻松调整水印宽高,精准适配每张图…

51c自动驾驶~合集30

我自己的原文哦~ https://blog.51cto.com/whaosoft/12086789 #跨越微小陷阱,行动更加稳健 目前四足机器人的全球市场上,市场份额最大的是哪个国家的企业?A.美国 B.中国 C.其他 波士顿动力四足机器人 云深处 绝影X30 四足机器人 &#x1f…

优化装配,提升品质:虚拟装配在汽车制造中的关键作用

汽车是各种零部件的有机结合体,因此汽车的装配工艺水平和装配质量直接影响着汽车的质量与性能。在汽车装配过程中,经常会发生零部件间干涉或装配顺序不合理等现象,且许多零部件制造阶段产生的质量隐患要等到实际装配阶段才能显现出来&#xf…

进入 RPG Prime:第六周游戏指南

进入 RPG Prime,在这里,每一个任务都是一个等待展开的史诗故事。选择你的等级,召集你的队伍,开始融合策略、魔法和神话的冒险! 本系列共有 10 篇攻略,贯穿 Alpha 第 4 季,每周都有新攻略&#…

STM32 BootLoader 刷新项目 (十) Flash擦除-命令0x56

STM32 BootLoader 刷新项目 (十) Flash擦除-命令0x56 1. STM32F407 BootLoader 中的 Flash 擦除功能详解 在嵌入式系统中,BootLoader 的设计是非常关键的部分,它负责引导主程序的启动、升级以及安全管理。而在 STM32F407 等 MCU 上实现 BootLoader&…