【系统架构设计师】工厂方法设计模式

devtools/2024/9/20 15:36:14/

工厂方法(Factory Method)模式是一种创建型设计模式,它定义了一个用于创建对象的接口,但让子类决定要实例化的类是哪一个。工厂方法让类的实例化延迟到子类中进行。

工厂方法模式的主要角色

  1. 产品(Product):定义工厂的创建对象的接口。
  2. 具体产品(Concrete Product):实现了产品接口的具体类。
  3. 工厂(Creator):声明一个工厂方法,该方法返回一个产品对象。工厂方法可以是抽象的,由子类实现;也可以是具体的,但通常会包含默认的实现。
  4. 具体工厂(Concrete Creator):实现了工厂接口的类,负责实例化产品对象。

示例代码

以下是一个使用Java实现的工厂方法模式的简单示例。在这个示例中,我们有一个产品接口Vehicle和两个具体产品类CarBike。我们还有一个工厂接口VehicleFactory和两个具体工厂类CarFactoryBikeFactory


http://www.ppmy.cn/devtools/109427.html

相关文章

02 Flask-快速上手

创建项目文件 从电脑选择一个盘符(来存放之后学习的项目文件) 这里选择以电脑C盘的桌面来做演示 在选择的盘符里面创建一个文件夹(来保存之后的学习文件) 使用 poetry 创建一个初始配置项(pyproject.toml) 详情参考 poetry init创建虚拟环境 poetry env use python激活虚拟…

Kafka【十一】数据一致性与高水位(HW :High Watermark)机制

【1】数据一致性 Kafka的设计目标是:高吞吐、高并发、高性能。为了做到以上三点,它必须设计成分布式的,多台机器可以同时提供读写,并且需要为数据的存储做冗余备份。 图中的主题有3个分区,每个分区有3个副本&#xf…

手机玩《逆水寒》PC端游,GameViewer远程助力手机远程畅玩《逆水寒》电脑版

手机玩《逆水寒》端游?不少玩家表示想要随时随地玩逆水寒端游,又不想占太多内存,想要用远程软件在手机上远程玩逆水寒,又想免费用所有功能,不知道选哪款?这里大家可以用专为游戏玩家打造的远程软件——网易…

vue3 前端实现pdf打印预览 printjs

在utils建print.ts文件 interface PrintFunction {extendOptions: Function;getStyle: Function;setDomHeight: Function;toPrint: Function; }const Print function (dom, options?: object): PrintFunction {options options || {};// ts-expect-errorif (!(this instanc…

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录 ✨说在前面 🍋知识点一:什么是list&…

深入了解以太坊

1. 以太坊编程语言和操作码 以太坊中智能合约的代码以高级语言编写,如 Serpent、LLL、Solidity 或 Viper,并可转换为 EVM 可以理解的字节码,以便执行。 Solidity 是为以太坊开发的高级语言之一,它具有类似 JavaScript 的语法,可以…

Spring Cloud全解析:熔断之Hystrix隔离策略

Hystrix隔离策略 Hystrix通过隔离限制依赖的并发量和阻塞扩散,Hystrix的隔离策略有两种: 线程隔离(THREAD) 使用该策略,HystrixCommand将会在单独的线程上执行,并发请求受线程池中的线程数的限制,默认使用该策略&…

大模型好书分享:《精通Transformer,从零开始构建最先进的NLP模型》(附PDF)

这本大模型书籍我已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】 内容简介 国内第1本Transformer——变形金刚红书 如果一定要说未来谁能引领人工智能世界,是Transformer而非chatGPT! 编…

windwos下vscode多文件项目创建、编译、运行

目录 🌕vscode多文件项目创建方法🌙具体案例⭐命令行创建项目名,并在vscode中打开项目⭐创建include目录和头文件⭐创建src目录和cpp文件⭐根目录下创建main.cpp 🌕运行项目失败(找不到include目录下的头文件和src目录…

目标检测-小目标检测方法

小目标检测是计算机视觉中的一个挑战性问题,因为小目标往往在图像中占据的像素较少,容易被背景或其他物体干扰。为了有效地进行小目标检测,研究人员和工程师提出了多种方法和算法来提高检测精度。以下是一些针对小目标检测的有效方式和算法&a…

PyTorch维度操作的函数介绍

在 PyTorch 中,操作张量的维度是常见的需求,特别是在处理多维数据时。PyTorch 提供了一系列函数来操作张量的维度,包括改变维度顺序、添加或删除维度、扩展维度等。下面是一些常用的维度操作函数及其示例代码。 1. view() 作用:…

【Python游戏开发】拼图小游戏demo

使用mu编辑器 pgzero编写拼图小游戏 import randomSIZE 96 # 设置每张图块的大小 WIDTH SIZE * 3 # 根据土块大小设置窗口 HEIGHT SIZE * 3 pics [] # 存放图块 finished False # 游戏结束标识# 将前八张图块存放在pics列表中 for i in range…

在Debian 9上安装Node.js的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 介绍 Node.js 是一个用于通用编程的 JavaScript 平台,允许用户快速构建网络应用程序。通过在前端和后端都使用 JavaScript&…

手机玩机常识-------诺基亚系列机型3/5/6/7/8详细的刷机教程步骤 手机参考救砖刷机教程

诺基亚手机 诺基亚(Nokia Corporation),成立于1865年,是一家主要从事移动通信设备生产和相关服务的手机公司 ,总部位于芬兰埃斯波 。从1996年开始,诺基亚手机连续15年占据手机市场份额第一位置&…

网络层ip协议

一.概念 ip协议主要是为了在复杂的网络环境中确定一个合适的路径来传输主机间的数据。简单来说就是用来确定主机的位置。 ip协议中的一些设备如下: 主机: 配有 IP 地址, 但是不进行路由控制的设备;路由器: 即配有 IP 地址, 又能进行路由控制;节点: 主机和路由器的统…

如何在 AWS S3 中设置跨区域复制

如何在 AWS S3 中设置跨区域复制 概述 欢迎来到雲闪世界。 Amazon Simple Storage Service (S3) 是一种可扩展的对象存储服务,广泛用于存储和检索数据。其主要功能之一是跨区域复制 (CRR),允许跨不同的 AWS 区域自动异步复制对象。此功能对于灾难恢复、…

Python 中混淆矩阵的热图

欢迎来到雲闪世界。混淆矩阵是一种方便的方式来呈现机器学习模型所犯的错误类型。它是一个带有数字的N x N网格,其中 [n, m] 单元格中的值表示注释为第 n 个类被识别为第 m 个类的示例数。在本教程中,我将重点介绍如何创建混淆矩阵和热图。调色板将用于显…

python多进程

文章目录 1、前言2、示例3、参考 1、前言 python中使用多进程,可以加快代码的运行速度,更高效地进行相关工作。 2、示例 使用蒙特卡洛方法计算 π \pi π来进行使用多进程前后代码运行速率的对比; import random import multiprocessing as…

[记录]-关于js中判断某个对象中是否存在某个属性的四种方法

应用场景: 在使用JavaScript编程时,我们常常会遇到一个问题:如何判断某个对象中是否存在某个属性? 对于这个问题,本文给出了四种解决方法。需要注意的是,四种方法是有区别的,应用哪一种方法需要…

实例讲解电动汽车车速计算算法及Simulink建模方法

电动汽车的车速信号是一个非常重要的信号,在VCU软件开发中,车速一般需要通过采集其他控制器车速或者通过电机转速间接计算出来,作为仪表显示车速、限速控制、剩余续驶里程计算等使用,因此,在VCU软件开发中,…