设计模式小结一工厂模式

先上结论:

        工厂模式,也是一个开发者必须要掌握的设计模式。笔者记得大学里编程接触到的第一个设计模式就是工厂模式,现在回过头来看,那时接触的应该叫简单工厂模式,工厂模式还包括:工厂方法模式、抽象工厂模式。

开干!

老规矩,先上理论:

工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们创建一个工厂类,该类负责实例化具有共同接口或基类的对象,而无需在代码中直接指定要实例化的具体类。这样做的好处是增加了代码的灵活性和可扩展性,使得在需要添加新类型的产品时,只需修改工厂类而无需修改客户端代码。

工厂模式有多种变体,最常见的有三种:简单工厂模式(Simple Factory Pattern)、工厂方法模式(Factory Method Pattern)和抽象工厂模式(Abstract Factory Pattern)。

  1. 简单工厂模式
    简单工厂模式通常由一个工厂类和一个或多个产品类组成。工厂类包含一个静态方法,该方法根据传入的参数(通常是产品类型或标识符)返回相应的产品实例。简单工厂模式将对象的创建与客户端代码分离,但它仍然将创建逻辑集中在一个类中,这可能导致该类变得过于复杂。

  2. 工厂方法模式
    工厂方法模式将对象的创建延迟到子类。它定义了一个创建对象的接口(或抽象类),但由子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到其子类。这样,客户端代码可以通过工厂接口来创建对象,而无需知道具体的产品类。

  3. 抽象工厂模式
    抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。与工厂方法模式相比,抽象工厂模式创建的是一系列相关的对象,而不是单一对象。它允许客户端使用抽象接口来创建一系列相关的产品,而无需关心实际创建的具体产品类。

工厂模式的主要优点包括:

  • 封装了对象的创建过程:客户端代码不需要知道如何创建对象,只需通过工厂接口请求对象即可。
  • 提高了代码的灵活性和可扩展性:当需要添加新类型的产品时,只需修改工厂类而无需修改客户端代码。

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

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

相关文章

SQL Server 2008 R2 详细安装教程及错误解决教程

SQL Server 2008 R2 详细安装教程及错误解决教程 文章目录 SQL Server 2008 R2 详细安装教程及错误解决教程1.装载或解压ISO文件2. 运行setup程序3. 下载并安装.NET Framework3.54.选择全新安装或向现有安装添加功能5.输入秘钥同意条款6.选择安装类型7.设置角色8.功能选择9.实例…

国际版JAVA同城打车源码同城服务线下结账系统源码适配PAD支持Android+IOS+H5

架构分析 导航栏:位于界面上方,包含了“数据中心”、“消息”、“用户中心”等主要功能模块的入口,方便用户快速访问。左侧功能模块:在界面的左侧,以列表形式展示了多个功能模块,如“数据中心”、“消息中…

营销页面设计:精准触达目标群体的艺术

在当今数字化的商业世界中,营销页面设计扮演着至关重要的角色。成功的营销页面设计不仅仅是美观那么简单,它需要结合场景设计、精准定位目标群体、巧妙运用设计元素以及精心策划的色彩搭配,共同编织出一张引人入胜的视觉网络。 今天就以洋河…

【spark面试题】RDD和DataFrame以及DataSet有什么异同

RDD(Resilient Distributed Dataset): 概念:可理解为分布式的列表。它的每个元素代表数据的一行,具有支持泛型这一显著特点。这种泛型支持让开发人员能够处理各种类型的数据,具有很强的灵活性。例如&#…

gdb和make工具

gdb工具: GDB的主要功能 断点设置:允许开发者在特定的代码行设置断点,当程序执行到该行时会自动暂停,方便开发者进行调试和分析。 变量查看与修改:在程序运行过程中,可以查看和修改变量的值,以…

Java实现图片转pdf

该方法可以选择多个图片是否合并为一个pdf输出&#xff0c;也可以选择图片为横向或者纵向输出&#xff0c;也可以选择pdf页面为A3或者A4 第一步 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version…

爬虫-------字体反爬

目录 一、了解什么是字体加密 二. 定位字体位置 三. python处理字体 1. 工具库 2. 字体读取 3. 处理字体 案例1:起点 案例2:字符偏移: 5请求数据 - 发现偏移量 5.4 多套字体替换 套用模板 版本1 版本2 四.项目实战 1. 采集目标 2. 逆向结果 一、了解什么是…

web实操3——servlet

课程链接b站&#xff1a;第12课 https://www.bilibili.com/video/BV1qv4y1o79t?spm_id_from333.788.videopod.episodes&vd_source05a3c1275b87b47507d869e9349ee3cd&p233 为什么只要写一个实现Servlet的类就可以被调用 tomcat根据url去web.xml里定位到我们写的类后&…

Jest项目实战(1):JavaScript 库设计原则及最佳实践

JavaScript库设计 在开始项目实战之前&#xff0c;我们先来介绍一下在设计开源库的时候有哪些原则以及最佳实践。 函数的设计 函数包含三要素&#xff1a; 函数名参数返回值 函数名 函数通常表示做一件事情&#xff0c;因此函数名一般为一个动词或者表示动作的短语&#…

HTML 基础标签——分组标签 <div>、<span> 和基础语义容器

文章目录 1. `<div>` 标签特点用途示例2. `<span>` 标签特点用途示例3. `<fieldset>` 标签特点用途示例4. `<section>` 标签特点用途示例5. `<article>` 标签特点用途示例总结HTML中的分组(容器)标签用于结构化内容,将页面元素组织成逻辑区域…

hpp文件的使用

提示&#xff1a;文章 文章目录 前言一、背景二、过程2.1 编写代码2.3 问题探究 总结 前言 前期疑问&#xff1a; 本文目标&#xff1a; 一、背景 最近突然看到hpp文件&#xff0c;查了百度也没有hpp文件怎么写的说明&#xff0c;自己就试着写了下&#xff0c;写成功了。 而…

NPU 可不可以代替 GPU

结论 先说结论&#xff0c;GPU分为可以做图形处理的传统意义上的真GPU&#xff0c;做HPC计算的GPGPU和做AI加速计算的GPGPU&#xff0c;所以下面分别说&#xff1a; 对于做图形处理的GPU&#xff0c;这个就和NPU 一样&#xff0c;属于DSA&#xff0c;没有替代性。当然&#xf…

java: 题目:银行账户管理系统

题目&#xff1a;银行账户管理系统 设计一个简单的银行账户管理系统。要求实现以下功能&#xff1a; 1. 创建一个银行账户 BankAccount 类&#xff0c;该类具有以下属性&#xff1a;accountNumber&#xff08;账户号码&#xff0c;类型为 String&#xff09; balance&#xff…

2024年无线领夹麦克风十大品牌推荐,衣领麦克风哪个品牌好

声音&#xff0c;是沟通的桥梁&#xff0c;是信息的载体。在信息爆炸的时代&#xff0c;如何让自己的声音脱颖而出&#xff0c;成为了每个人都需要思考的问题。无线领夹麦克风&#xff0c;以其小巧便携、无线传输的特点&#xff0c;成为了众多声音爱好者的首选。市场上无线领夹…

【C++的vector、list、stack、queue用法简单介绍】

【知识预告】 vector的介绍及使用list的介绍及使用list与vector的对比stack的介绍和使用queue的介绍和使用priority_queue的介绍和使用 1 vector的介绍及使用 1.1 vector的介绍 vector是表示可变大小数组的序列容器和数组类似&#xff0c;vector也采用连续存储空间来存储元…

杨传辉:云+AI 时代的一体化数据库|OceanBase发布会实录

在 2024 OceanBase 年度发布会 上&#xff0c; OceanBase CTO 杨传辉进行了主题为《云和 AI 时代的一体化数据库战略思考》的演讲&#xff0c;本文为演讲实录&#xff0c;欢迎阅读。 视频观看可点击&#xff1a;https://www.oceanbase.com/video/9001825 各位 OceanBase 的客…

[大模型]视频生成-Sora简析

参考资料&#xff1a; Sora技术报告https://openai.com/index/video-generation-models-as-world-simulators/4分钟详细揭密&#xff01;Sora视频生成模型原理https://www.bilibili.com/video/BV1AW421K7Ut 一、概述 相较于Gen-2、Stable Diffusion、Pika等生成模型的前辈&am…

【docker入门】docker的安装

目录 Centos 7 添加docker 官方仓库到yum源 将 Docker 的官方镜像源替换为国内可以的 Docker 镜像源 安装docker 配置docker加速源 Ubuntu 创建 gpg key 目录 下载 gpg key 添加国内可用镜像源到 系统的 APT 仓库中 安装docker 配置加速源 Centos 7 添加docker 官方仓…

2024年【汽车修理工(高级)】考试总结及汽车修理工(高级)试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 汽车修理工&#xff08;高级&#xff09;考试总结是安全生产模拟考试一点通总题库中生成的一套汽车修理工&#xff08;高级&#xff09;试题及解析&#xff0c;安全生产模拟考试一点通上汽车修理工&#xff08;高级&a…

vscode的一些使用心得

问题1&#xff1a;/home目录空间有限 连接wsl或者remote的时候&#xff0c;会在另一端下载一个.vscode-server&#xff0c;vscode的插件都会安装进去&#xff0c;导致空间增加很多&#xff0c;可以选择更换这个文件的位置 参考&#xff1a;https://blog.csdn.net/weixin_4389…