浅谈工厂模式

news2024/11/26 0:53:20

文章目录

      • 01 | 抽象工厂
      • 02 | 工厂方法
      • 03 | 未完待续

创建模式在什么被创建,谁创建它,它是怎么被创建的,以及何时创建这些方面提供了很强的灵活性。通常创建模式允许用结构和功能差别很大的“产品”对象来配置一个系统

01 | 抽象工厂

  • 抽象工厂模式Abstract Factory)主要为提供一个或者说创建一些相关(相互依赖)的对象的接口,而无须知道它们具体的类

  • 抽象工厂模式结构
    在这里插入图片描述

    • AbstractFactory:声明一个创建抽象产品对象的操作接口。
    • ConcreteFactory: 实现创建具体产品对象的操作。
    • AbstractProduct:为一类产品对象声明一个接口。
    • ConcreteProduct:定义一个将被相应的具体工厂创建的产品对象,实现AbstractProduct接口。
    • Client仅使用由AbstractFactory和 AbstractProduct类声明的接口。
  • 适用性

    • 一个系统要独立于它的产品的创建、组合和表示时。
    • 一个系统要由多个产品系列中的一个来配置时。
    • 当要强调一系列相关的产品对象的设计以便进行联合使用时。
    • 当提供一个产品类库,只想显示它们的接口而不是实现时。

02 | 工厂方法

  • 工厂方法Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化顺延到其他的类中。
  • 工厂方法结构
    在这里插入图片描述
    • Product定义工厂方法所创建的对象的接口。
    • ConcreteProduct实现Product接口。
    • Creator声明工厂方法,该方法返回一个 Product类型的对象。Creator也可以定义一个工厂方法的默认实现,它返回一个默认的ConcreteProduct对象,可以调用工厂方法以创建一个Product对象。
    • ConcreteCreator重定义工厂方法以返回一个ConcreteProduct 实例。
  • 适用性
    • 当一个类不知道它所必须创建的对象的类的时候。
    • 当一个类希望由它的子类来指定它所创建的对象的时候。
    • 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

03 | 未完待续

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

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

相关文章

决策树算法介绍

决策树目录1. 决策树基础1.1 决策树定义1.2 熵以及信息熵介绍2. 决策树的划分依据2.1 信息增益2.1.1信息增益应用举例2.2 信息增益率2.2.1 信息增益率使用举例2.2.2 信息增益率使用举例22.3 基尼值和基尼指数2.3.1 基尼值和基尼指数介绍2.3.2 基尼值和基尼指数实现案例1. 决策树…

e-STUDIO2010AC•2520AC安装步骤

注意!在室内室外温差比较大的情况下,设备需要在室内静置240分钟以上才可以进行安装。

如何训练个人的ChatGpt4

如何在自己的计算机上安装类似 ChatGPT 的个人 AI 并在没有互联网的情况下运行它 个人 AI 的“第一台 PC”时刻 这是个人AI的“第一台PC”时刻,随之而来的是限制,就像在车库里生产第一台Apple 1一样。你是先驱。今天,任何人都可以使用私人和…

一个从培训学校走出来的测试工程师自述....

简单介绍一下我自己,1997年的,毕业一年了,本科生,专业是机械制造及其自动化。 在校度过了四年,毕业,找工作,填三方协议,体检,入职。我觉得我可能就这么度过我平平无奇的…

【LeetCode】剑指 Offer 56. 数组中数字出现的次数 p275 -- Java Version

1. 题目介绍(56. 数组中数字出现的次数) 面试题56.:数组中数字出现的次数, 一共分为两小题: 题目一:数组中只出现一次的两个数字题目二:数组中唯一只出现一次的数字 2. 题目1:数组中…

学术速运|利用深度学习和分子动力学模拟设计抗菌肽

题目: Designing antimicrobial peptides using deep learning and molecular dynamic simulations 文献来源:Briefings in Bioinformatics, 2023, 1–13 代码:https://github.com/gc-js/Antimicrobial-peptide-generation 简介:随着多药耐…

Springboot实现文件断点续传-基于GridFS

Springboot实现文件断点续传-基于GridFS 需求介绍 我们后台是使用GridFS存储文件对象的,之前客户端都是Web浏览器,网络环境相对较为稳定,所以我们直接提供文件下载就行。但最近新增需求需要在移动端进行文件下载,这就有问题了。…

c++函数重载

C函数重载(Function Overloading)是指在同一个作用域,可以定义多个名称相同但参数列表不同的函数。在调用这些同名函数时,编译器根据实参与各个形参的类型、个数或顺序等特征来确定调用哪一个函数。 通过函数重载,我们…

UE4/5多人游戏详解(三、创建会话,委托绑定回调函数)

目录 基础的创建 回调函数绑定到委托: 实现创建会话的函数createGameSession: 回调函数实现判断验证是否成功: 添加会话设置: 测试 基础的创建 [提示:中途如果有无法编译则删除Binaries,saved,Intermediate后重…

倍增?最近公共祖先?——从定义到实现,帮你一步步吃掉它!

倍增?最近公共祖先?——从定义到实现,帮你一步步吃掉它! 一、倍增倍增——翻倍的增长 倍增是一种思想,实际上的操作就是通过不断翻倍来缩短我们的处理时间: 它可以把线性级别的处理优化到指数级。 举个…

5.redis-哨兵模式

01-哨兵模式概述 如果master宕机, 我们该怎么办? ①关闭所有slave②选举新的master, 建立新的主从结构 存在的问题 ①关闭期间, 谁来提供数据服务②选举新master的标准是什么③原来的master恢复了怎么办 哨兵模式 sentinel是一个分布式系统,用于对主从结构中的每…

【多线程】Thread类

1. Java中如何进行多线程编程?线程是操作系统中的概念,操作系统内核实现了线程这样的机制,并且对用户层提供了一些 API 供用户使用(如 Linux 中的 pthread 库)。所以本身关于线程的操作,是依赖操作系统提供的的 API,而…

练习,异常,异常处理,try-catch,throws

package com.jshedu.homework_;/*** author Mr.jia* version 1.0*/ //匿名内部类 public class Homework04 {public static void main(String[] args) {Cellphone cellphone new Cellphone();//1.匿名内部类,同时也是一个对象/*new computer() {Overridepublic dou…

JavaClient With HDFS

序言 在使用Java创建连接HDFS的客户端时,可以设置很多参数,具体有哪些参数呢,只要是在部署HDFS服务中可以设置的参数,都是可以在连接的时候设置. 我没有去验证所有的配置是否都可以验证,只是推测cuiyaonan2000163.com 依据 创建HDFS的构造函数如下所示: 网上比较常用的是get…

gdb 跟踪调式core

自己编译的问题出现段错误: 编译:使用gdb调试core文件来查找程序中出现段错误的位置时,要注意的是可执行程序在编译的时候需要加上-g编译命令选项。 gdb调试core文件的步骤 gdb调试core文件的步骤常见的有如下几种,推荐第一种。 具体步骤一: (1)启动gdb,进入core文…

【剑指 offer】旋转数组的最小数字

✨个人主页:bit me👇 ✨当前专栏:算法训练营👇 旋 转 数 组 的 最 小 数 字核心考点:数组理解,二分查找,临界条件 描述: 有一个长度为 n 的非降序数组,比如[1,2,3,4,5]…

ABAP 创建、修改、删除内部交货单(VL31N/VL32N)

一、干货 VL31N创建的BAPI: 1.GN_DELIVERY_CREATE 通用交货单使用的bapi,推荐使用 2.BAPI_DELIVERYPROCESSING_EXEC 简单,但是字段比较少 3.BBP_INB_DELIVERY_CREATE 听说有bug,我就没有使用这个了 VL32N修改/删除BAPI: BAPI_INB…

每日学术速递4.14

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Deep RL at Scale: Sorting Waste in Office Buildings with a Fleet of Mobile Manipulators 标题:大规模深度强化学习:使用移动机械手对办公楼中的垃圾进行…

VS2022编译libui库

libui是一个 C 中简单且可移植(但并非不灵活)的 GUI 库,它使用每个平台原生的GUI技术进行绘制。 官网地址:链接 本文将使用VS2022编译libui库,操作系统为Windows10。 1. 下载源代码 首先在官网下载源代码,由于此代码不依赖第三库,故只需下载源代码即可进行编译。 我下…

R730服务器环境搭建(centos7、lanproxy、docker、k8s)

文章目录前言一、centos7安装1.制作u盘启动盘2.开始装系统:二、环境安装(lanproxy、docker、k8s)1.lanproxy安装2.docker安装(如果通过k8sOfflineSetup安装k8s可以跳过这一步,因为会自动安装docker)3.安装k…