简单理解常用设计模式(六)工厂模式

Java设计模式之简单工厂模式 所以,干脆在模块内部新建一个类,在这个类里面来创建接口,然后把创建的接口返回给具体调用者,这样,外部应用就只需根据这个类来获取相应的接口对象,然后就可以操作接口定义的方法了。虽然说简单工厂的方法大多是用来创建接口的,但是仔细分析你会发现,真正能实现功能的是具体的实现类,这些实现类是已经做好的,并不是真的要靠简单工厂来创建出来的,简单工程的方法无外乎就是:实现了选择一个合适的实现类来使用。私有化简单工厂的构造方法,使用静态方法来创建接口,也就不能通过写简单工厂类的子类来改变创建接口的方法行为了。 阅读详情

这里说说工厂模式,其实在笔者写完(三)常用设计原则时,部分读者已经发现简单工厂的不妥了,因为在简单工厂模式下,新增功能需要添加新功能类,并且要修改工厂类的case判断,这样就违反了开闭原则:可以拓展但不能修改源码。

当然开闭原则不是绝对的,也可以根据实际开发场景来决定是不是遵循,但绝大多数情况下请遵循。

这里比较简单工厂模式和工厂模式的区别:

简单工厂模式的优点在于工厂类中包含了必要的逻辑判断,根据用户的选择条件(传参)来动态实例化相关的类,对调用者来说去除了和具体产品的依赖。

工厂模式下新增功能就只需要添加新功能类和对应的工厂类,就不用修改源码了,但不方便的地方在于,简单工厂类的逻辑判断转移到了调用方,调用者需要知道实例化具体哪个工厂才行。

UML图如下:


原书demo如下:




面向对象技术-工厂模式分析 讲述最简单的设计模式工厂模式,非常清楚地讲述了简单工厂模式和工厂模式的应用环 立即下载

相关推荐

CNN经典论文(一)LeNet

Gradient-Based Learning Applied to Document Recognition(梯度学习在文档识别中的应用) Yann LeCun, Leon Bottou, Yoshua Bengio, and Patrick Haffner 发表时间:December 1998 期刊:Proceedings of the IEEE 影响:世界上第一个卷积神经网络 论文地址:Gradient-Based Learning Applied to Document Recognition

loveling丶的博客 3597

面试官:说说你对工厂模式的理解?应用场景?

一、是什么工厂模式是用来创建对象的一种最常用的设计模式,不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂其就像工厂一样重复的产生类似的产品,工厂模式...

weixin_44475093的博客 4663

STM32驱动AD2S1210实现旋变解码与角度读取

旋转变压器作为一种耐高温、抗振动的角度传感器,在工业伺服、机器人关节和电动汽车电驱等场景中占据重要地位。其输出信号需要经过专用转换芯片处理才能被MCU高效使用。AD2S1210是一款典型的旋变数字转换器(RDC),内部采用Type II型跟踪环,将模拟SIN/COS信号实时解算为数字角度与速度,降低了处理器负担并提升抗干扰能力。本文基于STM32平台,详细介绍了AD2S1210的硬件接线、SPI通信配置、寄存器初始化流程,以及读取位置数据时的SAMPLE脉冲时序等关键实现。同时总结了常见故障如全FF、角度跳

weixin_34194829的博客 194

对工厂模式的一些理解

个人认为工厂模式是比较简单容易理解的,本质就是将创建对象的工作交给了工厂,不再由我们自己去new对象了,需要用到那个对象就去工厂里拿即可。工厂模式在实际开发中也是使用频率很高的一种模式,需要好好掌握、工厂模式的好处: 1、将创建对象的事交给工厂,客户端不用自己创建对象,明确了各个类的职责 2、如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,简化了对象的创建。 3、解耦,不用工厂的话,客户端和new对象的代码耦合在一起,工厂创建对象就可以将二者分开解耦。后期维护容易,增强系统的扩展性适用场景:首

kk阿彬 514

单片机课程设计——交通灯

单片机课程设计——交通灯一、课程设计主要内容1.1 题目1.2摘要1.3关键词二、设计要求三、设计方案四、参考电路设计4.1.1数码管的设计4.1.2对应程序4.2.1独立按键的设计4.2.2对应程序4.2.3 使用逻辑4.3.1LED模块的设置4.3.2 LED实物图4.3.3 LED显示程序五、调试要点5.1 单片机最小系统5.2 数码管模块5.3 LED模块5.4 独立按键六、总结七、成品图完整程序 一、课程设计主要内容 1.1 题目 交通灯设计 1.2摘要 近年来,随着我国国民经济的快速发展,我国机

PKPROTEUS的博客 3万+

PSCAD通过python调用自动化库的实现

带有python脚本的pscad自动化PSCAD通过python调用自动化库的实现前期准备实现 PSCAD通过python调用自动化库的实现 在网上搜了一圈没有找到,通过油管的一个视频学到了,这里分享一下。 前期准备 下载PSCAD 在官方文档中建议PSCADV4.6.1及以上版本 下载python python这里没注明哪些版本可用,博主下载了最新的3.8.2使用正常。 下载IDE py...

橙子的博客 5912

面向对象设计原则、设计模式之简单工厂、工厂方法

面向对象设计原则 在实际的开发中,我们要想更深入的了解面向对象思想,就必须熟悉前人总结过的面向对象的思想的设计原则 设计原则 1.单一职责原则 2.开闭原则 3.里氏替换原则 4.依赖注入原则 5.接口分离原则 6.迪米特原则 1.单一职责原则 其实就是开发人员经常说的”高内聚,低耦合” 也就是说,每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个。在设计模式中,所 有的设计模式都遵循这一原则 2.开闭原则 核心思想是:一个对象对扩展开放,对修改关闭。 其实开闭原则的意思

qq_43336579的博客 493

SAP S4 HANA 新资产会计中的平行分类账估值

在资产会计中,我们可以设置使用折旧区域的平行分类账会计 我们需要根据涉及的会计原则定义折旧区域,在我们的方案中,公司 FR01 是一家国际集团的当地分支机构,公司 FR01 需要按照集团会计准则 IFRS 和当地 GAAP 会计准则报告财务报表。过账到 LG 会计原则(分类帐 2L)-->分类账 2L的 150 欧元损失 -->在 IFRS 折旧区域,我们有 100 欧元的收益,在 LG 折旧区域,我们有 150 欧元的损失,使用平行分类账 0L 和 2L,我们能够根据不同的会计原则进行平行估值。

yanzibing99的博客 1328

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

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

xmt1139057136的专栏 5222

置顶必读(1) |《滚雪球学SpringBoot 3.x》· 高质量专栏介绍,你值得拥有!

《滚雪球学SpringBoot 3.x》 并不是普通的技术讲解合集,它是专为开发者精心设计的系统化学习路径。通过不断“滚动学习”,我们将带领你从基础入门到高阶应用,从理解每一行代码到设计和优化大规模分布式系统,最终帮助你成长为一位精通 spring架构 的工程师。

**My Coding Family** 12万+

RK3399外设驱动之MIPI

RK3399外设驱动之MIPI 文章目录RK3399外设驱动之MIPIMIPI命令解析入口代码mipi显示配置实例rk3399mipi驱动rk mipi驱动注册过程rk32_mipi_dsi.c解析 内核版本 Linux4.4 平台 rk3399 作者 nineyole MIPI命令解析入口代码 MIPI的入口代码如下:kernel\drivers\video\rockchip\screen\lcd_mipi.c static int __init rk_mipi_screen_in

学无止境 2229

谈谈你对工厂模式的理解

谈谈你对工厂模式的理解 工厂模式官方介绍: 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 意图:定义一个创建对象加粗样式的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子...

qq_35158164的博客 1254

NVIDIA Isaac ROS - 入门教程(一)

欢迎访问 Isaac ROS,这是一套硬件加速、高性能、低延迟的 ROS 2 软件包,用于制造自主机器人,充分利用 Jetson 和其他英伟达平台的强大功能。英伟达 Jetson 平台运行在基于 Ubuntu Linux 的 JetPack 操作系统上。JetPack 5.x 是在 Ubuntu 20.04 Focal 的基础上构建的,这意味着由 ROS 2 Buildfarm 为 Ubuntu 22.04 Jammy 构建的 ROS 2 Humble 的 Debian 包不受支持。由于官方 ROS 2 B

机器人控制与仿真应用 5721

23种设计模式——工厂模式

文章目录23种设计模式——工厂模式1、工厂模式概述2、简单工厂模式2.1、简单工厂模式的优缺点2.2、简单工厂模式的结构2.3、简单工厂模式的实现3、工厂方法模式3.1、工厂方法模式的优缺点3.2、工厂方法模式的结构3.3、工厂方法模式的实现4、抽象工厂模式4.1、抽象工厂模式概述4.2、抽象工厂模式结构4.3、抽象工厂模式实现 23种设计模式——工厂模式 1、工厂模式概述 工厂模式的定义:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。这满足创建型模式中所要

万里顾一程的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java设计模式——工厂模式

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

weixin_56032340的博客 8632

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

深入理解设计模式-简单工厂模式vs工厂方法模式vs抽象工厂模式对比讲解

文章目录前言一、简单工厂模式1.描述2.特点3.优缺点4.类图说明二、工厂方法模式1.描述2.特点3.适用场景4.类图说明5.简单工厂模式与工厂方法模式区别:三、抽象工厂模式1.描述2.特点3.优缺点4.类图说明结尾 前言 简单工厂模式、工厂方法模式、抽象工厂模式比较相像,很多同学傻傻分不清楚,本文进行详细对比说明,建议对三个模式有一定基础再进行阅读,如不了解可查看往期文章。 一、简单工厂模式 1.描述 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但

少说,多做 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【深入理解设计模式】 工厂设计模式

工厂设计模式是一种创建型设计模式,它提供了一种在不指定具体类的情况下创建对象的接口。在工厂设计模式中,我们定义一个创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

guojiaqi_的博客 1559

DesignPattern设计模式

本文主要介绍了设计模式相关内容。包括软件设计的SOLID原则,设计模式的分类,单例模式的思想与实现,工厂模式的思想与实现,建造者模式的思想与实现,代理模式的思想与实现,责任链模式的思想与实现等内容。供个人学习使用。

专注Java和MySQL领域知识分享 1881

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

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

weixin_39781687的博客 1696

深入理解Java设计模式-工厂模式

1.什么是工厂模式 它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。实现了创建者和调用者分离,工厂模式分为简单工厂、工厂方法、抽象工厂模式 2.工厂模式好处 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。 利用工厂模式可以降低程序的耦合性,为后期的维护修改提供了很大的便利。 将...

小杰爱吃蛋的博客 1万+

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

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

大秦坑王的专栏 2553

C# 设计模式之简单工厂模式

C# 设计模式之简单工厂模式

鲤籽鲲的博客 1305

Unity3D常用设计模式之工厂模式

Unity3D常用设计模式《工厂模式》   工厂模式(Factory Pattern)是游戏开发中比较常用的设计模式。这种类型的设计模式属于创建型模式,它提供了一种创建对象实例的最佳方式。在工厂模式中,我们在创建对象时不会对用户暴露创建对象的具体细节,而是通过提供一个共同的接口来创建需要的对象。   如果不好理解,先来看看生活中的一个真实案例。例如某个品牌的汽车制造工厂,对外提供生产这个品牌的不同型号汽车的服务。外界只要指定一个“汽车型号”,工厂就可以根据型号来构建出对应型号的汽车。这样外界就不用关心工厂

biliskener的博客 3026

探索设计模式的魅力:简单工厂模式

实现简单工厂的难点就在于 “如何选择” 实现,前面便子中传递参数的方法, 那都是静态的参数,还可以实现成为动态的参数。客户端通过简单工厂创建 了一个实现接口的对象,然后面向接口编程,从客户端来看,它根本不知道具体的实现是什么,也不知道是如何实现的,它只知道通过工厂获得了一个接口对象 , 然后通过这个接口来获取想要的功能。如果通过客户端的参数来选择具体的实现类,那么就必须让客户端能理解各个参数所代表的具体功能和含义,这样会增加客户端使用的难度,也部分暴露了内部实现,这种情况可以选用可配置的方式来实现。

danci_btp的博客 1010

【深入设计模式】工厂模式—简单工厂和工厂方法

设计模式(Design pattern)是软件工程的基础,最近在对公司项目代码进行迭代升级之后,决定把设计模式相关的知识点拉出来再重新整理一遍进行分享。学习设计模式,不仅是为了面试,更是为了在工作中能够写出易于维护、扩展性好的代码,否则不考虑设计的功能代码也是在给后人挖坑(已经深受其害)。 首先分享的是工厂模式,将这部分分为两部分,第一部分是是简单工厂模式和工厂方法模式的介绍及演进,主要介绍这两种模式结构,以及如何从简单工厂衍生出工厂方法模式。第二部分是抽象工厂模式和工厂模式在源码应用(下一篇博客进行分..

SK_Jaco的博客 1587

重温设计模式--工厂模式(简单、工厂、抽象)

工厂方法模式(Factory Method Pattern):在简单工厂模式上进行了改进,把具体产品对象的创建方法延迟到具体的工厂子类中实现,工厂类变成抽象类,有一个抽象的创建方法,每个具体的工厂子类负责创建对应的具体产品对象,符合开闭原则(对扩展开放,对修改关闭)。具体产品(Concrete Product):实现抽象产品族中的相应抽象产品类,代表具体的产品对象,不同的具体工厂创建不同组合的具体产品。工厂类(Factory):负责创建具体的产品对象,根据传入的条件或者参数决定实例化哪种具体产品。

doubleintfloat的博客 1866
上一篇: 简单理解常用设计模式(五)代理模式
下一篇: 简单理解常用设计模式(七)模板方法模式(抽取公共的)
gcc_front
博客等级 码龄9年 16粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值