工厂方法模式(Factory Method Pattern)

原文地址:https://jaune162.blog/design-pattern/factory-method-pattern/

概述

工厂方法模式(Factory Method Pattern)是一个对象创建型模式。

定义一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method使一个类的实例化延迟到其子类。

– 《设计模式:可复用面向对象软件的基础》

说的更直白一点就是,定义一个工厂接口,将对象的实例化操作放到工厂的实现类中。

解析

这个例子中有饮品 Drink 和饮品工厂 DrinkFactoryDrinkFactory 负责生产 Drink。在现实生活中可口可乐(Coca)和奶茶(MilkyTea),不是由一家生产的,而是生产可口可乐的工厂生产可口可乐,Coco奶茶店可以生产奶茶。

当我们需要奶茶饮品的时候就需要用 CocoDrinkFactory 生产,当我们需要可口可乐的时候就需要用 CocaDrinkFactory 生产。

这个例子不太恰当,因为我们不会直接从可口可乐工厂购买可口可乐。但是我认为用这个例子来解释工厂方法模式是没有问题的。而且能够清晰的描述出工厂方法模式的使用场景。

public interface Drink {
}

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

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

相关文章

Leetcode21:合并两个有序链表

一、题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]输入:l1 [], l2 [] 输出:[]输入&#…

【芯片设计- RTL 数字逻辑设计入门 8 -- 四选一多路器】

文章目录 四选一多路输出器verilog case 语句verilog 代码testbench 代码仿真波形 问题小结 四选一多路输出器 制作一个四选一的多路选择器,要求输出定义上为线网类型 状态转换: d0 00 d1 01 d2 10 d3 11verilog case 语句 case(express…

亚马逊认证考试系列 - 知识点 - 安全组介绍

第一部分:AWS简介 Amazon Web Services(AWS)是全球领先的云计算服务提供商,为个人、企业和政府机构提供广泛的云服务解决方案。AWS的服务包括计算、存储、数据库、分析、机器学习、人工智能、物联网、安全和企业应用等领域。AW…

【Java 数据结构】反射

反射 1 定义2 用途(了解)3 反射基本信息4 反射相关的类(重要)4.1 Class类(反射机制的起源 )4.1.1 Class类中的相关方法(方法的使用方法在后边的示例当中) 4.2 反射示例4.2.1 获得Class对象的三种方式4.2.2 反射的使用 5、反射优点和缺点 1 定义 Java的反…

【openwrt】MT7981 5G WiFi MAC地址不生效问题分析及解决方案

问题描述 MT7981 默认sdk 5G MAC地址根据2.4G MAC地址随机生成,我们写到Factory区域的值不生效 问题分析 查看EEPROM MAC位置 查看MTK EEPROM文档MT7981_EEPROM_Content_Introduction_V10_20211207.pdf可以看到EEPROM里面有两个位置可以存放MAC,0x04~0x09 和0x0a~0x0f 查看…

Simulink|光伏阵列模拟多类故障(开路/短路/阴影遮挡/老化)

目录 主要内容 模型研究 1.正常模型 2.断路故障 3.短路故障 4.阴影遮挡 5.老化模型 结果一览 1.U-I曲线 2.P-V曲线 下载链接 主要内容 该模型为光伏阵列模拟故障情况simulink模型,程序实现了多种故障方式下的光伏阵列输出功率-电压-电流关系特…

类型化数组

数字存储前置知识 计算机必须使用固定的位数来存储数字,无论存储的数字是大是小,在内存中占用的空间是固定的n位的无符号整数能表示的个数是2^n个 取值范围是0~2^n-1 举例:000 001 111 表示[0-8]n位的有符号整数能表示的个数是2^n个 取值范围…

通义千问上线春节新应用,AI帮你免费拍全家福

2月5日,春节将至年味渐浓,阿里云通义千问APP上线多项免费新应用,涵盖全家福、拜新年、万物成龙等图像生成的新玩法,共提供超300套照片模板,用户上传照片即可生成全家福、团圆照、拜年照、千里江山主题照;此…

七月论文审稿GPT第2.5和第3版:分别微调GPT3.5、Llama2 13B以扩大对GPT4的优势

前言 自去年7月份我带队成立大模型项目团队以来,我司至今已有5个项目组,其中 第一个项目组的AIGC模特生成系统已经上线在七月官网第二项目组的论文审稿GPT则将在今年3 4月份对外上线发布第三项目组的RAG知识库问答第1版则在春节之前已就绪至于第四、第…

Jupyter Notebook中的%matplotlib inline详解

Jupyter Notebook中的%matplotlib inline详解 🌵文章目录🌵 🌳引言🌳🌳什么是魔术命令🌳🌳%matplotlib inline详解🌳(👈直入主题请点击)🌳小结🌳&…

深入理解Java中的二叉树

目录 一、什么是二叉树? 二、二叉树的主要类型 三、二叉树的实现 四、二叉树的应用 五、关于二叉树的题目 引言: 二叉树是计算机科学中常用的一种数据结构,它是由节点组成的层级结构,每个节点最多有两个子节点。在Java编程语言中,二…

c#cad 创建-多线段(三)

运行环境 vs2022 c# cad2016 调试成功 一、程序说明 AutoCAD中创建多段线的。具体解释如下: 获取当前文档和数据库,并创建一个编辑器(用于与用户交互)。使用事务处理的方式,开始对数据库的操作。打开模型空间&…

110 C++ STL 迭代器的概念和分类

一。迭代器基本概念 迭代器是一个 “可以遍历STL容器全部或者部分元素”的对象。 这个对象类似于指针的作用。 迭代器用来表现容器中的某一个位置。 迭代器紧密依赖于容器,迭代器是由容器来提供的,也就是说:一般来说,是容器里…

Git的一些基本操作

初始git 我们给出下面的一个场景,在大学里,一些老师在我们做完实验之后喜欢让我们交实验报告,假设我们有一个比较追求完美的老师和一个勤奋的学生,这个学生叫做小帅,那天小帅桑勤奋的完成实验报告,在第二天…

[C/C++] -- JSON for Modern C++

JSON for Modern C(nlohmann/json)是一个流行的 C JSON 库,由德国开发者nlohmann编写。这个库提供了简洁而灵活的 API,使得在C中解析和生成JSON数据变得非常方便。 1.JSON简介 JSON(JavaScript Object Notation&…

台灯学生用哪个牌子好?学生用护眼台灯品牌推荐

晚上学习,有台灯肯定比没台灯好。只要是盏合格的、能用的台灯,都能给你一个稳定又亮堂的环境。但是有些不合格的台灯会给眼睛带来伤害,尤其是学习负担比较重的学生。那有哪些台灯是学生用着比较好用的呢? 一、学生使用护眼台灯的…

图数据库neo4j入门

neo4j 一、安装二、简单操作<一>、创建<二>、查询<三>、关系<四>、修改<五>、删除 三、常见报错<一>、默认的数据库密码是neo4j,打开浏览器http://localhost:7474登录不上,报错: Neo.ClientError.Security.Unauthorized: The client is un…

#Z0463. 巡逻1

Description 在一个地区中有 n 个村庄&#xff0c;编号为 1, 2, ..., n。有 n – 1 条道路连接着这些村 庄&#xff0c;每条道路刚好连接两个村庄&#xff0c;从任何一个村庄&#xff0c;都可以通过这些道路到达其 他任一个村庄。每条道路的长度均为 1 个单位。 为保证该地区的…

如何使用Python + 百度翻译API 自动大批量免费翻译Excel文件中的外语内容

手里有一个Excel文件,包括了大量的亚马逊德语搜索词(关键词),每个单元格1个,需要翻译为中文。但是文件大小超过了10M,不能使用百度或Google免费的文档功能,如果手工一个个的翻译然后粘贴又太麻烦,于是想到用Python加免费翻译API完成。 一、openpyxl库 用Python编辑处…

Magnet AXIOM取证神器的安装使用方法及详细教程

Magnet AXIOM取证神器的安装使用方法及详细教程 公众号&#xff1a;鱼影安全1.Magnet AXIOM取证工具介绍&#xff1a;2.Magnet AXIOM取证工具安装&#xff1a;第一步&#xff1a;第二步&#xff1a; 3.Magnet AXIOM取证工具使用方法&#xff1a; 公众号&#xff1a;鱼影安全 关…