设计模式--工厂和策略的区别

工厂模式和策略模式的区别 策略模式(Strategy Pattern): 策略模式是一种行为型设计模式,它定义了一系列的算法或策略,并使得这些算法可以相互替换,而不影响客户端的使用。工厂模式(Factory Pattern): 工厂模式是一种创建型设计模式,它提供了一种统一的接口来创建对象,而不需要直接使用具体的类进行实例化。以上示例中,工厂模式通过工厂类统一创建具体的图形对象,而策略模式通过设置不同的绘制策略实现不同的图形绘制方式。具体策略(Concrete Strategy):实现了策略接口,定义了具体的算法或策略。 阅读详情

工厂(Factory)模式我们可以做如下理解,假设有一个Audi的公司生产汽车(似乎也不用假设了),它掌握一项核心的技术就是生产汽车,另一方面,它生产的汽车是有不同型号的,并且在不同的生产线上进行组装。当客户通过销售部门进行预定后,Audi公司将在指定的生产线上为客户生产出它所需要的汽车。

策略(Strategy)模式在结构上与工厂模式类似,唯一的区别是工厂模式实例化一个产品的操作是在服务端来做的,换句话说客户端传达给服务端的只是某种标识,服务端根据该标识实例化一个对象。而策略模式的客户端传达给服务端的是一个实例,服务端只是将该实例拿过去在服务端的环境里执行该实例的方法。这就好比一个对汽车不甚了解的人去买车,他在那一比划,说要什么什么样的,销售部门根据他的这个“比划”来形成一份订单,这就是工厂模式下的工作方式。而策略模式下那个顾客就是个行家,他自己给出了订单的详细信息,销售部门只是转了一下手就交给生产部门去做了。通过两相对比,我们不难发现,采用工厂模式必须提供足够灵活的销售部门,如果用户有了新的需求,销售部门必须马上意识到这样才可以做出合适的订单。所以倘一款新车出来了,生产部门和销售部门都需要更新,对顾客来说也需要更新对新车的描述所以需要改动的地方有三处。而策略模式中的销售部门工作比较固定,它只负责接受订单并执行特定的几个操作。当一款新车出来时,只需要对服务端的生产部门和客户端的代码进行更新,而不需要更新销售部门的代码。

参考:

设计模式--工厂和策略的区别(转) - 走看看

【大话设计模式】之 策略+工程模式 对比【工厂模式】和【策略模式】 工厂 一个 属于创建型的设计模式,主要用来针对不同类型创建不同对象,达到类解耦。 策略 一个类的行为或算法可以在运行时更改。 属于行为型的设计模式,主要用来针对不同情况执行不同算法,达到行为解耦。 结合 我们会发现,工厂模式和策略模式都是去除if/else的重要手段,尤其在看代码简单的demo时会发现工厂模式和策略模式会很像,这就要我们好好去体会行为型模式和创建型模式的区别。 当我们使用策略模式的时候,会发现还是需要写if else 去判断使用哪个 阅读详情

相关推荐

工场模式与策略模式的区别是什么?

工场模式(在软件设计中通常称为工厂模式)与策略模式在软件设计中扮演着不同的角色,解决不同的问题。定义:工厂模式是一种创建型设计模式,提供了一种创建对象的接口,而不是直接实例化对象。工厂模式通常用于解耦对象的创建过程,使得客户端无需关注具体对象的创建细节。目的:通过使用工厂模式,可以在不修改现有代码的情况下,通过改变工厂类或方法的实现,来控制创建的对象类型。这有助于提高系统的可扩展性和灵活性。综上所述,工厂模式和策略模式在定义、目的、结构、关注点和使用场景等方面存在明显的区别。

cesske的博客 629

工厂模式和策略模式区别

工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,对象的创建逻辑被封装在工厂类中,客户端通过调用工厂类的方法来创建所需的对象,而无需直接实例化对象。这样做的好处是隐藏了对象创建的复杂性,提高了代码的封装性和可维护性。简单工厂模式:通过一个工厂类根据传入的参数来决定创建哪一个产品类的实例。这种模式的缺点是工厂类承担了所有的产品创建责任,违反了开闭原则(即对扩展开放,对修改关闭)。工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。

jun778895的博客 2614

设计模式之工厂模式和策略模式的区别

工厂模式关注于对象的创建,隐藏了具体产品类的实例化逻辑; 策略模式关注于算法或行为的封装,通过接口允许不同算法互换使用。

JustinMars的博客 541

工厂模式和策略模式区别以及使用

工厂模式(Factory Pattern)和策略模式(Strategy Pattern)都是软件设计中常用的行为型设计模式,它们在解决软件设计中的问题时,各有其特点和适用场景。

MichaelZ的博客 7140

亚马逊商品评论爬取与情感分析实战:Python+BeautifulSoup高效解析(附反爬技巧)

本文详细介绍了使用Python和BeautifulSoup库高效爬取亚马逊商品评论并进行情感分析的完整实战流程。文章从环境搭建、核心代码编写入手,重点讲解了如何通过设置请求头、添加延迟等防封策略应对反爬机制,确保数据抓取的稳定性。最后,利用TextBlob库对评论文本进行情感分析,并通过可视化图表直观展示产品口碑,为电商选品与市场调研提供数据支持。

weixin_29046611的博客 1164

树莓派4B+WebRTC实现远程监控:5步搞定公网视频流传输(含Node.js配置)

本文详细介绍了如何利用树莓派4B和WebRTC技术,通过5个关键步骤搭建低延迟、高隐私的远程监控系统。重点阐述了WebRTC点对点传输相较于传统方案的优势,并提供了包含Node.js信令服务器配置、树莓派视频流捕获与推送、以及移动端自适应观看页面的完整实现方案,帮助用户实现公网视频流传输。

websocket5live的博客 292

工厂设计模式和策略设计模式的区别

工厂模式和策略模式是两种常用的设计模式,它们有一些区别和不同的应用场景。目的和用途:工厂模式(Factory Pattern)的主要目的是创建对象,它将对象的创建过程封装在一个工厂类中,客户端只需要通过工厂类来获取所需的对象,而无需了解具体的创建细节。工厂模式可以根据不同的条件或配置来创建不同的对象,提供了一种灵活的对象创建方式。策略模式(Strategy Pattern)的主要目的是封装和交换算...

dotNET跨平台 614

别再手动巡检了!用Zabbix 5.0 + SNMPv2自动监控华为S系列交换机(附完整命令集)

本文详细介绍了如何利用Zabbix 5.0与SNMPv2实现华为S系列交换机的自动化监控,告别低效的手动巡检。通过配置SNMPv2c安全基线、核心功能启用及Zabbix Server端深度配置,构建7×24小时监控体系,实时预警接口状态、流量波动等关键指标,大幅提升运维效率与故障响应速度。

weixin_30940783的博客 629

设计模式-工厂模式和策略模式的区别

工厂模式关注的是创建过程,而策略模式关注的是行为或算法的变化。它们可以在不同的设计中单独使用,也可以结合使用以实现更复杂的功能。工厂模式:通过创建工厂类,将对象实例化的责任转移到工厂。当我们不知道需要实例化哪个类时,会使用工厂模式。它隐藏了对象实例化的复杂性。策略模式:允许在执行时选择不同算法或操作。当我们需要动态地改变对象的行为或者算法时,会使用策略模式。这使得算法可以独立于使用它的客户端而变化。

技术日常 1699

一文解释电路中常用电子元器件应用和选型01

电容和二极管是电路中最常用的两个电子元器件,种类和系列众多,这里简单总结一下应用场景和选型方式 电容(Capacitor) 电容的种类(20种以上)和应用非常广泛,但是我经常遇到的无非就是下面这几种: 应用 1.隔直流。 2.旁路(去耦) 3.耦合 4.滤波 5.温度补偿 6.计时 7.调谐 8.整流 9.储能 种类 1. 陶瓷电容 2. 云母电容 3. 铝电解电容 4. 钽

weixin_43904073的博客 2237

STM32F407编译下载全流程:从CubeMX到HEX烧录

嵌入式固件开发中,编译与下载是连接代码与硬件的关键闭环。其本质是将高级语言描述的逻辑,经交叉编译(ARM GCC)、链接(ELF生成)、格式转换(HEX/BIN)后,通过调试接口(SWD/UART)写入MCU Flash存储器的过程。该流程涉及工具链协同、二进制格式特性(如Intel HEX的地址映射与无元数据设计)、启动模式(System Memory Bootloader)、Flash选项字节(RDP/WRP)等底层机制,直接决定固件可运行性与安全性。典型应用场景包括STM32F407开发板调试、量产固

weixin_28840811的博客 260

设计模式——工厂模式和策略模式的区别

工厂模式和策略模式的区别在使用上,两者都有一个抽象类或接口,供不同的“产品”或者“策略”去继承或者实现,不同点在于,工厂模式中,具体产品的实例化发生在工厂内部,然后通过工厂的某个方法传递给外部使用,而策略模式是在外部实例化一个策略,然后传递到使用环境中,再由环境对其应用。这样说比较抽象,可以参考具体例子。//工厂模式 //抽象产品 /** * Created by zhangx-ae on 201

Excaliburace的博客 672

位置点位到达判断FC(Easy+Codesys+博途平台)

IN rActPositon REAL 轴当前实际位置 1IN arAbsPosition REAL[10] 各工作点位坐标 2IN rDeadZone REAL 位置达到判断域值 范围 3OUT abInAbsPos BOOL[10] 到达各绝对定位点位标志 位置到达输出 4VAR i INT 循环计数 5VAR rErr REAL 位置偏差 6。

RXXW_Dor的博客 536

北风设计模式课程---策略模式和工厂模式的区别

北风设计模式课程---策略模式和工厂模式的区别 一、总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 1、策略模式和工厂方法模式 相像 在哪? 都是多重情况的选择, 都是解决if-else选择结构臃肿的问题 2、策略模式和工厂模式的区别? 用途不一样:行为型模式,创建型模式 关注点不一样:行为的封装,对象创建 解决不同的问题:定...

weixin_34221276的博客 223

YOLOv12改进策略【卷积层】| SPD-Conv 针对小目标和低分辨率图像的检测任务

SPD-Conv是一种新的 CNN 构建模块,用于替代传统 CNN 架构中使用的步长卷积(strided convolution)和池化(pooling)层,它由空间到深度(Space-to-depth,SPD)层和非步长卷积(non - strided convolution)层组成。

Limiiiing的博客 1779

Pytorch实用教程:super(MLP,self).__init__()和super().__init__()有什么区别?

在 Python 中,super()函数用于调用父类(超类)的方法。它的使用在继承关系中非常常见,特别是在初始化继承自父类的属性时。在 PyTorch 中,这通常见于初始化nn.Module类的子类。super()的两种调用方式有微妙的差别,但在 Python 3 中常常用来达到同样的目的。这种写法在 Python 2 中非常常见。这里,super()被调用时需要指定当前类名(MLP)和当前实例(self。

若北辰 1026

【151期】面试官:熟悉设计模式吗?谈谈简单工厂模式和策略模式的区别?

别问别人为什么,多问自己凭什么!下方留言必回,有问必答!每天更新文章,每天进步一点点…刚刚接触设计模式的时候,我相信单例模式和工厂模式应该是用的最多的,毕竟很多的底层代码几乎都用了这些模式。自从接触了一次阿里的公众号发的一次文章关于 DDD的使用 以后,就逐渐接触了策略模式。现在在项目中运用最多的也是这几种设计模式了,用了设计模式给我的感受就是感觉代码没那么冗余了,再注入一点贫血,充血模型之后,感觉在 service 层面代码看上去很舒服很简洁。

2401_86367086的博客 1252

SAP B1中文培訓教材_SDK

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

【设计模式】详细解释工厂模式和策略模式的区别,并给出形象生动的示例说明

工厂模式是一种创建型模式,它定义了一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂模式让类的实例化推迟到子类进行。 策略模式是一种行为型模式,它定义了一系列算法,并将每一个算法封装起来,使它们可以互换。策略模式让算法的变化独立于使用算法的客户。

Dylaniou的博客 568

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

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

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

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

设计模式之策略模式和工厂模式的区别

本篇博客转载于策略模式与工厂模式比较。

booleandev 756

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

策略模式和工厂模式的区别_设计模式之工厂模式

工厂模式(Factory Method)是将客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。工厂模式适用情况:当多个子类(产品)共同继承同一父类(工厂),并由消费者的要求指定生产某一种产品时使用该种设计模式。工厂模式分为:简单工厂模式(Simple Factory) 工厂方法模式(Factory Method) 抽象工厂模式(Abstract F...

weixin_39748445的博客 287

策略模式和工厂模式的区别_设计模式(一)--工厂模式

计划把设计模式和大家分享下,先从工厂模式开始。设计模式分类一般我们所说的设计模式分为23种:创建型:工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)、原型模式(Prototype)、单例模式(Singleton)结构型:适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰器模式(De...

weixin_39540020的博客 204

设计模式之工厂模式和策略模式实现以及区别

设计模式之工厂模式和策略模式实现以及区别

寂夜了无痕的博客 962

大话设计模式 简单工厂和策略模式区别

类图 区别 针对点 简单工厂针对的是对象 需要使用着手动调用方法 策略模式针对的是行为即方法 可以提供某种功能 同时可以加入额外功能 如日志打印 对象的创建 简单工厂 是自己创建 策略模式是由使用者创建 调用的方法 简单工厂针对的是对象 需要使用者调用对象的目标方法 策略模式针对的是行为 所以只需要调用策略对象提供的方法 ...

nailsoul的专栏 199

《大话设计模式》之 简单工厂模式和策略模式的区别和相同之处

简单工厂模式和策略模式的理解 相同之处:1.它们都有一个抽象类或公共接口,并且在抽象类或者接口中,定义一个方法(或虚拟抽象方法);2.通过子类进行继承父类或者实现接口方法。3.使用多态特性,进行实例方法调用,调用的是子类的方法; 区别之处:1.简单工厂模式 强调的创建类对象,根据 字符串类型参数传入参数,进行实例化;2.简单工厂模式,必须定义一个制造实例的工厂类

tjb_1216的专栏 2699
上一篇: 兑换零钱问题
TechIsCool
博客等级 码龄5年 0粉丝 5原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值