设计模式之工厂方法模式总结

Qt C++实现HTTP/HTTPS服务器与客户端:从Socket到协议解析全流程 HTTP协议作为Web通信的基础,定义了客户端与服务器之间基于文本的请求-响应模型。其工作原理是通过TCP连接传输结构化的报文,实现资源获取与数据交换。在C++开发中,掌握HTTP协议底层实现具有重要技术价值,能够帮助开发者构建高性能、可深度定制的网络应用,尤其适用于嵌入式设备管理、桌面应用后端等场景。本文聚焦于使用Qt框架的QTcpSocket和QSslSocket组件,从Socket层面手动实现完整的HTTP/HTTPS通信栈,涵盖协议解析、流式处理、路由分发等核心环节,并深入探讨了HTTPS证书验证、 阅读详情

快速引入

如果我们做某件事,把他交给另外一个人做完,而我只要得到答案即可,并不想知道过程,而且有可能这些事的细节不同,但是总归是一类事,你都得给我完成。就好像你是个土豪,去买车,我今年想要定制版的林肯加长,你造车厂给我造好就行了,明年又想要兰博基尼,你工厂又给我弄好就行了,我也不想知道你怎么弄好的,虽然我要的车都是不同的,但是你都得给我处理好。这个时候工厂可能就忙不过来了,就会把业务线发给旗下子工厂去完成,每个子工厂造一类车,而总工厂只进行把控。

实战

我们项目中做网络请求一样,获取到了数据,但是这个数据是json的,我们需要转换成实体类,尽管请求过来的数据可能不同,但是工厂模式都能应付。这个时候我们就需要一个抽象类来当“总工厂”了

public abstract class DataConverter {
     //存放子工厂返回的结果(不用关心MultipleItemEntity只是一个实体类)
    protected final ArrayList<MultipleItemEntity> ENTITIES = new ArrayList<>();
    private String mJsonData = null;
     //调用此方法返回解析结果
    public abstract ArrayList<MultipleItemEntity> convert();

    public DataConverter setJsonData(String json) {
        this.mJsonData = json;
        return this;
    }

    protected String getJsonData() {
        if (mJsonData == null || mJsonData.isEmpty()) {
            throw new NullPointerException("DATA IS NULL!");
        }
        return mJsonData;
    }

    public void clearData(){
        ENTITIES.clear();
    }

}

某一个分工厂,还可以有其他名字不同的分工厂这里只举一个例子


public class ShopCartDataConverter extends DataConverter {
    @Override
    public ArrayList<MultipleItemEntity> convert() {
       //在这里将得到的json数据解析出来,放入ENTITIES中返回回去。

        return ENTITIES ;
    }
}

使用

//此段代码放在网络请求成功后的接口回调里,response是请求成功后的json数据
  final ArrayList<MultipleItemEntity> data =
                new ShopCartDataConverter()
                        .setJsonData(response)
                        .convert();

这里我举例的是购物车的数据,如果是其他数据,只需要建立相应的其他子工厂即可,然后调用的时候new子工厂的。

小结

工厂方法模式降低了对象之间的耦合度,将实例化的任务交由子类去完成,有非常好的扩展性,符合软件设计原则。

优点:

1.在工厂方法中,用户只需要知道所要产品的具体工厂,无须关系具体的创建过程
2.在系统增加新的产品时,我们只需要添加一个具体产品类和对应的实现工厂,无需对原工厂进行任何修改,很好地符合了“开闭原则”。

缺点:

1.每次增加一个产品时,都需要增加一个具体类和对象实现工厂,系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。

【DSP】【工程实战】从零构建C6678多核工程:CCS环境配置与启动模式详解 本文详细介绍了在CCS开发环境中从零构建TMS320C6678多核DSP工程的完整流程。内容涵盖KeyStone架构解析、工程创建、基础代码编写、链接命令文件配置、仿真器调试,并重点深入讲解了包括I2C EEPROM在内的多种一级启动模式原理与配置方法,为开发者提供了一套清晰、可复用的实战指南。 阅读详情

相关推荐

MicroPython 开发ESP32应用教程 之 WIFI配网 Web页面配网 softAP 配网 web页面控制WS2812灯珠

MicroPython 开发ESP32应用教程 之 WIFI配网 Web页面配网 softAP 配网 web页面控制WS2812灯珠

weald2000的专栏 2080

设计模式——工厂方法模式总结

工厂方法模式 概述 与简单工厂的区别 工厂方法模式也是工厂模式的一种,对比简单工厂模式,他们之间的区别有以下几点: 简单工厂模式是根据参数的不同用 if 与 else 判断返回的产品,其工厂职责很重,可能一个工厂类中有高达几个个 if 。而工厂方法模式将工厂分离,具体实现工厂继承同一个抽象工厂,具体实现工厂生产不同的产品。 简单工厂模式如果要加入新的产品,那么必须修改工厂的逻辑,违背了“开闭原则”。而工厂方法模式则可以新建工厂或者产品,不用修改代码逻辑。 定义与使用场景 工厂方法模式:定义一个用于创建对

菜鸟更要继续努力的博客 298

开源分享:苹果群控手机源代码解析与实战

本文介绍了苹果设备群控的基本原理和实现方法,重点解析了基于Python+Appium的群控系统构建。主要内容包括:1)设备连接管理技术(USB/Wi-Fi);2)自动化控制方式(WDA/AppleScript/Appium);3)实战演示了通过Python脚本实现多设备同时控制,涵盖环境配置、代码解析和功能说明;4)提出了多线程、图像识别等优化方向。文章为开发者提供了快速上手的群控方案,适用于自动化测试、批量管理等场景,并推荐了相关开源项目参考。

2403_88540309的博客 1344

简单工厂模式

模式结构: Factory:工厂角色 工厂角色负责实现创建所有实例的内部逻辑 Product:抽象产品角色 抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口 ConcreteProduct:具体产品角色 具体产品角色是创建目标,所有创建的对象都充当这个角色的某个具体类的实例。 优点: 工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费”产品;简单工厂模式通过这种做

SnailPace的博客 291

Halcon一维测量实战:从measure_pos与measure_pairs的底层原理到精准应用

本文深入解析Halcon中measure_pos与measure_pairs算子的底层原理与精准应用,涵盖参数调优、测量矩形方向设置及典型工业场景实战。通过对比分析,揭示两者在一维测量中的核心差异与适用场景,提供从基础到高级的完整解决方案,助力工业视觉检测精度提升。

weixin_42525551的博客 423

STorM BGC V1.31硬件+SimpleBGC固件:从零搭建三轴云台开发环境(Keil+JLink避坑指南)

本文详细介绍了如何从零搭建STorM BGC V1.31硬件+SimpleBGC固件的三轴云台开发环境,涵盖硬件连接、Keil+JLink开发工具配置、固件编译与烧录等关键步骤,并提供了常见问题的解决方案和调试技巧,帮助开发者快速上手三轴云台开发。

weixin_28693683的博客 380

【设计模式】工厂方法模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

一、工厂方法模式简介、 二、工厂方法模式适用场景、 三、工厂方法模式优缺点、 四、工厂方法模式代码示例、 1、产品抽象类、 2、产品实现类 1、 3、产品实现类 2、 4、抽象工厂类、 5、实现工厂类 1、 6、实现工厂类 2、 7、测试类、 五、扩展上述工厂方法模式、 1、扩展的产品实现类、 2、扩展的工厂实现类、 3、测试类、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 6763

迅投miniQMT量化交易之【网格交易】的实现(25)——写在最后

和大家一起分享如何使用miniQMT实现我们自己的网格交易系统。如果您对量化交易感兴趣,欢迎一起交流。

tzzqn2008的专栏 829

Java真的不难(二十九)工厂模式(2)

小应学长带你学Java

小应学长的的博客 1万+

白鲸优化算法(BWO)详解:从生物灵感 to 工程实践

白鲸优化算法(BWO)是一种新型的群体智能优化算法,模拟白鲸的游泳、捕食和鲸落行为。该算法通过平衡因子控制探索与开发阶段的转换:探索阶段采用正弦/余弦函数模拟白鲸的同步游泳,开发阶段引入莱维飞行增强局部搜索,鲸落阶段通过随机更新避免局部最优。BWO具有参数少、实现简单、收敛速度快等优点,已在多个优化问题上展现出优异性能。其数学模型将白鲸的三种核心行为抽象为位置更新公式,实现了全局搜索与局部开发的自然平衡。

qq_42212808的博客 290

基于Python的Booking酒店数据爬虫实战:最新技术与完整代码解析

本文将详细介绍如何使用Python构建一个高效的Booking酒店数据爬虫,涵盖从基础爬取到高级反反爬技术的完整实现。我们将使用最新的Python爬虫技术栈,包括requests-html、Playwright、智能代理轮换等技术,并提供完整的可运行代码示例。文章将深入探讨爬虫的各个组成部分,包括数据提取、存储、反反爬策略以及性能优化等方面。关键词:Python爬虫、Booking数据采集、反反爬技术、Playwright、数据存储。

2201_76125261的博客 936

C++ 工厂模式 总结分析

C++ 工厂模式,总结一下,分享给大家。 简介 用一个单独的类来做创造实例的过程,是工厂;用工厂方法代替new操作的一种模式;工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象。 分类 简单工厂模式、工厂方法模式、抽象工厂模式 为什么要使用工厂模式? 程序更规范有条理,当我们创建实例对象时,如果不仅仅做赋值这样简单的事情,而是有一大段逻...

黎国溥 2507

SAP B1中文培訓教材_SDK

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

23种设计模式之工厂方法模式(Factory Method Pattern)【设计模式】

📒工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它通过定义一个创建对象的接口来让子类决定实例化哪一个类,使得一个类的实例化延迟到其子类。这种模式的核心思想是将对象的创建过程推迟到子类,从而实现更灵活、更可扩展的代码。// 抽象产品 - 文档。

李赛赛的专栏 1411

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

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

The essence of the Abstract Factory Pattern is to “Provide an interface for creating families of related or dependent objects without specifying their concrete classes.”.[5] abstract factory

ShuSheng007的程序人生 5224

计算机控制技术及应用

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

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

本篇文章将23种设计模式中的工厂方法模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。

小威的博客 2万+

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

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

weixin_45226668的博客 1082

23种设计模式——工厂方法模式(Factory Method Pattern)详解

本文介绍了23种经典设计模式之——工厂方法模式(Factory Method Pattern)的说明及使用

Meteors.的博客 1381

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

工厂方法模式是一种创建型设计模式,主要解决对象创建的问题。它的核心思想是:把对象的创建和使用分离,让使用者不直接依赖具体类,而是通过工厂来获得对象。

TechNomad的博客 1016

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

工厂方法模式是一种创建型设计模式,它定义了一个创建对象的接口,但由子类决定实例化哪一个类。工厂方法让类的实例化延迟到子类中进行,从而避免了直接在客户端代码中硬编码具体的类名。核心思想:将对象的创建职责交给子类,而不是在父类中硬编码。该模式通过封装对象的创建逻辑,实现了对变化的隔离,使系统更加灵活、可扩展。Log/*** 日志记录器接口*/LogFactory工厂方法:关注单一产品的创建,每个工厂只负责一种产品。抽象工厂:关注一组相关产品的创建,适合创建多个相关对象。

在未来等你的专栏 1217

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

工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它提供了一种创建对象的接口,但实际创建对象的工作由子类完成。这种模式的主要目的是降低类之间的耦合度,增强类的独立性,并提高系统的可维护性和可扩展性。工厂方法模式的主要特点(1)分离了算法和对象创建:通过工厂方法,我们可以将对象的创建和使用分离,使得代码更加清晰和易于维护。(2)实现多态:工厂方法允许子类实现自己的行为,从而支持不同的创建策略。(3)避免使用new关键字:工厂方法模式通过工厂方法代替new关键字,可以减少错误。

giser@2011的博客 1434

C#设计模式——工厂方法模式(Factory Method Pattern)

定义一个创建对象的接口,但由子类决定需要实例化那一个类。(工厂模式是我们常用的实例化对象模式了,是用工厂方法代替new 操作的一种模式,简单工厂的特点就是“简单粗暴”,通过一个含参的工厂方法,我们可以实例化任何产品类。:工厂方法模式中,具体的工厂只是生产具体的某一个产品。而抽象工厂模式的具体的工厂可以生产族产品(例如奔驰轿车、奔驰SUV、奔驰MPV)。抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一种产品的继承结构,而抽象工厂模式需要面对多个产品的继承结构。

qq_57198771的博客 1719

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

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

LJianDong的博客 684

设计模式一、 工厂方法模式(Factory Method Pattern)

设计模式一、 工厂方法模式(Factory Method Pattern)一、概念:定义一个用于创建对象的接口,让子类决定将哪个工厂类实例化。 (Factory Method使得一个类的实例化延迟到其子类)二、目的:解决接口选择的问题。三、方式:让其子类实现方法...

Ysunflower的博客 408

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

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

星Yeah 的博客 4227

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

设计模式 工厂方法模式(Factory Method Pattern) 一、简述 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪个类。将创建过程延迟到子类进行。 对比简单工厂模式:(简单举例) 简单工厂模式是客户端将需求参数传递给产品工厂,产品工厂返回对应的产品实例对象给客户端; 工厂方法模式是不同的产品由不同的工厂生产,客户端想要A产品,自己找A工厂创建,客户端想要B产品,就自己找B工厂创建。 例子打包:外...

Genven_Liang的博客 444

设计模式中的工厂方法模式(Factory Method Pattern)

在软件开发中,对象的创建是一个重要环节。如果直接在代码中使用 `new`(或 Python 中的 `__init__` 方法)实例化对象,可能会导致代码耦合、难以维护、扩展困难。 工厂方法模式(Factory Method Pattern) 提供了一种创建对象的抽象方式,可以延迟到子类来实现,从而提高系统的灵活性和可扩展。本文将详细介绍工厂方法模式的概念、应用场景,并通过 Python 代码示例展示其实现方式。

890
上一篇: Java -克隆实现方式 深克隆与浅克隆
下一篇: 设计模式之策略模式总结
HJsir
博客等级 码龄10年 19粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值