抽象工厂模式 - 代码理解

设计模式:抽象工厂模式C++实现 文章目录前言1. 抽象工厂模式理解2. C++实现抽象工厂模式总结 前言 今天复习了抽象工厂模式,之前复习了简单工厂模式和工厂方法模式,它们实现的功能都是一样的:为了封装对象的创建过程。如果大家对简单工厂模式和工厂方法模式不熟悉,可以看下之前的文章: 简单工厂模式:https://blog.youkuaiyun.com/DU_YULIN/article/details/119778822 工厂方法模式:https://blog.youkuaiyun.com/DU_YULIN/article/details/119821207 阅读详情

目录

1、抽象工厂模式 -- 创建对象

2、代码

3、总结


1、抽象工厂模式 -- 创建对象

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。

 


2、代码

抽象工厂模式的 UML 图

 

限于篇幅,直接参考文章:https://www.runoob.com/design-pattern/abstract-factory-pattern.html

 

关键的工厂生成类:

FactoryProducer.java

获取工厂的方法为静态方法(方法区中首先生成),可以通过类名直接调用。

public class FactoryProducer {
    // 静态方法,可以直接通过类名调用
   public static AbstractFactory getFactory(String choice){
      if(choice.equalsIgnoreCase("SHAPE")){
         return new ShapeFactory();
      } else if(choice.equalsIgnoreCase("COLOR")){
         return new ColorFactory();
      }
      return null;
   }
}

 


3、总结

设计模式 - 抽象工厂模式 抽象工厂模式是一种创建型设计模式,它提供了一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。这种模式特别适用于需要创建一系列相关产品的情况,而且这些产品的具体实现可能会随着环境的不同而改变。本文将详细介绍抽象工厂模式的概念,并通过具体的Java代码示例来说明如何实现这一模式。 阅读详情

相关推荐

避坑指南:STM32F4的ADC采样FSR传感器,如何稳定读数并校准压力值?

本文详细解析了STM32F4的ADC采样FSR薄膜压力传感器时遇到的读数不稳定和非线性校准问题,提供了从硬件配置到软件滤波的完整解决方案。通过优化ADC设置、改进滤波算法和实施分段线性校准,帮助工程师实现高精度压力测量,特别适用于智能手套和医疗监测等应用场景。

weixin_28675839的博客 273

Java设计模式-抽象工厂模式

抽象工厂模式是将工厂与产品都抽象化,这样在实例化工厂的时候,对具体对象的依赖就会变得很小,比如IFactory factory = new MysqlFactory();,当需要切换数据库到postgresql的时候,直接修改为IFactory factory = new PostgresqlFactory();即可,下面的User相关的代码全部不需要改动,因为它们都是接口依赖,而接口又不会改变,所以只需要改变很少的地方即可实现比较大的需求变动。

我的小幸运呢 455

别再纠结高侧低侧了!用INA199/INA219这类集成电流检测芯片,5分钟搞定精准电流测量

本文详细解析了使用INA199/INA219等集成电流检测芯片实现精准电流测量的高效方案。通过对比传统分立元件方案,突出集成芯片在精度、温度稳定性和设计简化方面的优势,并提供硬件设计避坑指南和软件实现最佳实践,帮助开发者快速掌握电流检测技术。

weixin_42685438的博客 471

抽象工厂模式

一、简单代码描述 抽象产品A类 package factorypattern.abstractfactory;public abstract class AbstractProductA { public void shareMethod() { System.out.println("这是A产品共有的特点"); } // 具体A产品的具体方法 publi

代码小钢炮的博客 262

海量数据 / Vastbase 深度研究笔记 v3.1

v3.1 重点修订:在 v3.0 审慎版基础上,新增“2026 新变量”章节,纳入 7 亿级定增、HTAP / 多模态时序数据库、G100 V3.0 Build 8 的 3CM+2DN 高可用补强、pgvector / V100 / AI 多模叙事,以及集成服务基因与标准软件 ARR 的拉扯。核心关注点是:Vastbase 能否把 openGauss 生态红利、数据库产品矩阵和行业交付能力,转化为可持续、可复购、低边际成本的标准软件收入。海量不是没有业务基本盘,也不是马上失血致死;客户越多,服务债越大。

喝醉酒的小白 569

vos如何对接okcc(保姆级教程)

1.添加账户 点击 系统->账户管理 [图片] 2.创建费率 系统->费率管理 点击添加

qq_46333281的博客 3453

设计模式之抽象工厂模式

设计模式之抽象工厂模式

lidaoping12345的博客 216

《点亮创新灯塔!AI应用架构师与中小学初等教育AI智能体,共筑智能化教育辅助创新灯塔》

中小学AI智能体,是基于AI技术,能感知教育场景、理解教育规律、辅助教师教学和学生学习的智能系统。做老师“做不了”的事:比如5分钟批改45本作业,精准统计每个学生的易错点;做老师“做不好”的事:比如根据学生的学习风格(视觉/听觉/动觉)推荐个性化内容;绝不做老师“该做的事”:比如情感交流、价值观引导、创意教学设计——这些“人的温度”,AI永远无法替代。我是林宇,资深AI应用架构师,专注教育AI领域8年,参与过10多个中小学AI智能体项目,曾为北京、上海、深圳等城市的100多所学校提供AI教育解决方案。

Java大师兄的博客 433

抽象工厂模式 (流程图) + 代码

如下 ![抽象工厂模式](https://img-blog.csdnimg.cn/20191010142738115.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4MzkwMDky,size_16,color_FFFFFF,t...

奋斗 900

【BUG已解决】RuntimeError: CUDA error: no kernel image is available for execution on the device 解决方案

方案适用场景推荐指数精确匹配官方版本绝大多数场景(大众消费卡+主流数据中心卡)⭐⭐⭐⭐⭐安装历史旧版本Pascal/Maxwell等老显卡⭐⭐⭐⭐安装Nightly版本刚发布的最新架构显卡⭐⭐⭐⭐源码编译官方各版本均不支持的特殊硬件⭐⭐Docker官方镜像追求省心、避免版本排查⭐⭐⭐⭐⭐的核心是PyTorch 预编译包不包含你显卡对应的计算能力架构先确认显卡真实计算能力),而不是盲目重装驱动对比 PyTorch 支持的架构列表),定位是否真的不匹配精确匹配官方版本。

博客 1万+

清华源pip install出现ERROR: Could not find a version that satisfies the requirement的解决方案

本文主要介绍了清华源pip install出现ERROR: Could not find a version that satisfies the requirement的解决方案,希望能对学习python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 8万+

代码详解设计模式--抽象工厂模式

简单工厂模式   实例:创建一个形状接口和实现该接口的圆形和方形,然后定义形状工厂。Demo演示类使用工厂来获取不同的形状对象。 优点: 屏蔽产品的具体实现,调用者只关心产品的接口。 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 缺点: 每增加一个形状,都需要增加一个具体类和工厂的 if / else 分支。 在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。...

博学de叫兽 1万+

蓝牙芯片驱动开发-第11章第1题-WiFi蓝牙共存的关键策略有哪些

蓝牙芯片驱动开发-第11章第1题-WiFi蓝牙共存的关键策略有哪些

weixin_42162924的博客 30

对java设计模式-抽象工厂模式的理解

我看道下面的这段解释,解释的很好,我终于算是醒悟了 抽象工厂模式(Abstract Factory) 抽象出来一个基础接口定义了产品功能(对应抽象产品角色),每个实现此接口的子类就是具体产品(对应具体产品角色),然后定义一个工厂接口(对应抽象工厂角色),实现了工厂接口的子类就是具体工厂(对应具体工厂角色),这时候,接口编程的优点就体现了,我们可以随时新增具体产品类(只需要实现产品接...

u012028371的博客 290

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

GO抽象工厂模式

抽象工厂模式

lisus2007的专栏 561

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

设计模式(三)——抽象工厂模式(Abstract Factory)

 意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 适用性 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。 理解 单例模式,主要是为了保证类的实例的唯一性。其中的思想,与防止继承的思想非常像,都是私有化构造方法,然后通过开放的静态方法对实例进行创建或访问。

wsad_hjk的专栏 740

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Abstract Factory 抽象工厂模式

Abstract Factory 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。Abstract Factory 使用若干个工厂方法模式,每个工厂创建一个不同类型的对象。当创建一个工厂对象时,要决定如何使用那个工厂创建的所有对象。 适用性:1.一个系统要独立于它的产品的创建、组合和表示时。2.一个系统要由多个产品系统中的一个来配置时。3.当你要强调一系列相关的

zhangcunli的专栏 651

面试官:抽象工厂模式是什么?

面试官:抽象工厂模式是什么?

真正的大师永远怀着一颗学徒的心 1590

抽象工厂模式(PHP)

抽象工厂模式的PHP示例代码,便于快速理解该设计模式。 结构图 优化前: 优化后: 口罩工厂 interface IMask { function showMask(); } class LowEndMask implements IMask { public function showMask(){ echo "我的低端口罩\n"; } } class HighEndMask implements IMask { public functi

qq_36453564的博客 245

抽象工厂模式:抽象工厂模式和工厂模式有区别吗?

提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。

464

抽象工厂模式(AbstractFactoryPattern)

定义 提供一个创建一系列相关或者相互依赖的类的工厂接口,他包含多个产品类的工厂方法,及一个工厂类能够创建多个产品。 结构图 角色与理解 抽象工厂模式总共包含如下四种角色: AbstractFactory(抽象工厂):包含多个创建同一产品族中产品的抽象工厂方法的抽象类,一个抽象工厂定义了一个输出的产品族 ConcreteFactory(具体工厂):抽象工厂的实现 AbstractProduct(抽象产品):所有具体产品的父类,这里指单一产品的父类而不是一个产品族的共同父类 .

码农架构 375

java 抽象工厂 类图_Java 抽象工厂模式

抽象工厂模式(Abstract Factory Pattern)是工厂方法模式的进一步抽象,其英文原话"Provide an interface for creating families of related or dependent objects without specifying their concrete classes",翻译,“为创建一组相关或相互依赖的对象提供一个借口,无需指定...

weixin_30236323的博客 1967

android中工厂模式应用,抽象工厂模式在android中使用

抽象工厂模式(Abstract Factory)抽象工厂模式是对象的创建模式,它是工厂方法模式的进一步延伸和拓展的结果。抽象工厂模式更加抽象化,更具一般性特点。我们知道,工厂方法模式是针对单一的产品等级结构而产生的,而这里的抽象工厂模式则是针对多个产品等级结构的。当然,单一的产品等级结构也同样适用于抽象工厂模式的。下面为其具体的等级结构图说明: 从上面的结构示意图,可以看到抽象工厂模式中涉及到了多...

weixin_30716641的博客 358

C++设计模式——抽象工厂模式

问题描述 之前讲到了C++设计模式——工厂方法模式,我们可能会想到,后期产品会越来越多了,建立的工厂也会越来越多,工厂进行了增长,工厂变的凌乱而难于管理;由于工厂方法模式创建的对象都是继承于Product的,所以工厂方法模式中,每个工厂只能创建单一种类的产品,当需要生产一种全新的产品(不继承自Product)时,发现工厂方法是心有余而力不足。 举个例子来说:一个显示器电路板厂商,旗下...

a5607754的博客 160

Java工厂模式详解:方法工厂模式与抽象工厂模式

方法工厂模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但让子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到子类中进行。抽象工厂模式(Abstract Factory Pattern)提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。方法工厂模式和抽象工厂模式都是用于创建对象的设计模式,但它们的应用场景和侧重点不同。方法工厂模式侧重于单个对象的创建,通过子类决定实例化哪个类;

2401_83447580的博客 1911
上一篇: 工厂模式 - 代码理解
下一篇: Java 一个对象什么时候被回收
Longtermevolution
博客等级 码龄9年 113粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值