Java23种设计模式的研究之一(抽象工厂方法模式(Abstract Factory))

23种设计模式-抽象工厂(Abstract Factory)设计模式 软考中级-软件设计师 抽象工厂模式 阅读详情
  前面一篇文章分析到工厂方法模式(3种类型模式),今天有空就倒腾一番抽象工厂模式。前面的工厂模式对我们原有的代码侵入性太强,不利于我们后期对原有功能的扩展,这也违背了Java设计模式的六大原则之一开闭原则。(Java设计模式六大原则:开闭原则、里氏代换原则、依赖倒转原则、接口隔离、迪米特法则、单一职责原则)。抽象工厂模式就恰好规避了侵入性强的缺点。翻看了些许抽象工厂模式的讲解,其实各不千秋。在抽象工厂模式里面有产品族这一概念,也说抽象工厂模式是工厂模式的升级,工厂模式里面有产品等级一说。其他见解小菜就不区分详情,在此给出自己的见解、看测试代码。
先看图理解规避侵入性强的特点。

=========================产品接口及其实现类==========================
/*
 * 抽象为产品类接口
 */
public interface Sender {
public void send();
}

/**
 * 具体产品的实现类(邮寄发送类)
 * @author ZJD
 */
public class MailSender implements Sender {
@Override
public void send() {
System.out.println("this is MailSender");
}
}

/**
 * 具体产品的实现类(短信类)
 * @author ZJD
 */
public class SmsSender implements Sender {
@Override
public void send() {
System.out.println("this is SmsSender");
}
}

========================工厂接口及其实现(生成)类=======================

/**
 * 工厂类生产接口
 * @author ZJD
 */
public interface Provider {
      // >>>>生成产品方法
public Sender produce();
}

/**
 *  邮件工厂实现类
 * @author ZJD
 */
public class SendMailFactory implements Provider {
@Override
public Sender produce() {
return new MailSender();
}
}

/**
 *  短信工厂实现类
 * @author ZJD
 */
public class SendSmsFactory implements Provider {
@Override
public Sender produce() {
return new SmsSender();
}
}

===================测试类========================
public class AbstractFactoryTest {

public static void main(String[] args) {
//邮件工厂实现类 -->>>>生产发送邮件类的产品
Provider provider1 = new SendMailFactory();
Sender sender1=provider1.produce();
sender1.send();
System.out.println("==========================");

//短信工厂实现类-->>>>生成发送短信的产品
Provider provider2 = new SendSmsFactory();
Sender sender2=provider2.produce();
sender2.send();

}
}

输出结果:
this is MailSender
==========================
this is SmsSender

如果你现在想增加一个功能:发及时信息,则只需做一个实现类,实现Sender接口,同时做一个工厂类,实现Provider接口,就OK了,无需去改动现成的代码。这样做,拓展性较好!抽象工厂模式的出现就很好的规避了侵入性的缺点,但抽象工厂和工厂模式的应用也应根据不同的业务场景需求,无论是简单工厂模式,工厂方法模式,还是抽象工厂模式,他们都属于工厂模式,在形式和特点上也是极为相似的,他们的最终目的都是为了解耦。在使用时,我们不必去在意这个模式到底工厂方法模式还是抽象工厂模式,因为他们之间的演变常常是令人琢磨不透的。经常你会发现,明明使用的工厂方法模式,当新需求来临,稍加修改,加入了一个新方法后,由于类中的产品构成了不同等级结构中的产品族,它就变成抽象工厂模式了;而对于抽象工厂模式,当减少一个方法使的提供的产品不再构成产品族之后,它就演变成了工厂方法模式。在系统中我们所做的模块化,抽象化,配置化,为的就是系统的解耦合,一旦能做到满足自身系统和业务需求的解耦合最大化就是对自身最好的设计模式。      









动态表单设计 自定一表单数据结构。内容展示如有必要行转列。前端根据题目类型自定义组件后端跟俊题目类型用策略模式校验各种类型这样有统计功能的简单动态问卷就可以了展示时可能某些场景需要行转列。大概估摸使用的话有可能kmic_form_data_detail表的记录数比较大,后期再考虑数据或者表迁移或拆分。 阅读详情

相关推荐

基于ROS2 Humble与Livox Mid-360的双雷达点云融合实战解析

本文详细解析了基于ROS2 Humble与Livox Mid-360的双雷达点云融合实战方案。从环境搭建、驱动安装、双雷达配置、外参标定、时间同步到点云融合核心实现,全面介绍了技术要点与避坑指南,并提供了工程化部署与性能优化建议,助力开发者高效实现高精度点云合成应用。

ss78901的博客 1093

抽象方法模式(AbstractFactory)

Abstract Factory(抽象工厂)——对象创建型模式 1.意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类 2.适用性 一个系列要独立于它的产品的创建、组合和表示时 一个系列要由多个产品系列中的一个来配置时 当你要强调一系列相关的吃产品对象的设计以便进行联合使用时。 当你提供一个产品类库,而只想显示它们的接口而不是实现时。 3.结构...

行走 689

用Arduino和FS-i6X遥控器,从零开始打造你的第一只仿生扑翼蝴蝶(附完整代码解析)

本文详细介绍了如何利用Arduino和FS-i6X遥控器从零开始制作仿生扑翼蝴蝶,包括硬件准备、电路连接、代码解析和调试技巧。通过完整的代码示例和参数说明,帮助读者快速掌握仿生机器人的制作要点,实现蝴蝶的自然飞行效果。

weixin_28727975的博客 309

设计模式-抽象方法模式

看抽象方法模式之前,最好看看工厂方法模式。当成品种类越来越多,并且产品有越来越多系列的时候,工厂方法模式就有点力不从心了,按照示例中动物有猫狗,猫狗下有猫粮狗粮,当要是猫吃猫粮的时候,就需要获取猫工厂、猫粮工厂,如果不小心获取到猫工厂、狗粮工厂,那么就会出错。 为了优化这个问题,当一个类别的产品有多个系列区分的时候,为了按照系列生产商品,那么就需要用抽象工厂进行区分。即将猫与口粮...

zgsxhdzxl的博客 526

【DDSCAT——离散偶极近似仿真程序04】参数理解和模型设计

在这一部分,我们开始理解DDSCAT程序设计中的一些参数问题。 承接第二部分内容中的ddscat.par文件,我们来聊一聊偶极子、实际体积、有效半径等关键词。 一、偶极子点阵 手册中说,我们需要设计模型(target/目标),它是有偶极子点阵组成的。偶极子,顾名思义,是由一对电荷组成的,但我们不用设计一对,我们设计一个点就行,...

XD_Yangf的博客 7552

新能源知识库(68)复叠压缩式热泵蒸汽系统介绍

复叠压缩式热泵蒸汽系统通过多级压缩技术将低品位热能转化为高品位蒸汽,在汽车电镀场景中实现了高效、精准的能源利用。随着超高温工质与智能联供系统的发展,该技术将深度赋能电镀行业的高质量可持续发展。​:±1℃控温保障镀层均匀性,提升产品良率;多台复叠热泵+储热装置(如纺织厂6台热泵)复叠热泵+余热回收+智能控制(化工厂案例)​:无燃烧设计契合汽车行业ESG目标。单台高温热泵机组(如92P型号)复叠压缩式热泵蒸汽系统以。67.4万元(↓22%)600万–1200万元。事故率 ↓90%​​。150万–600万元。

竹君子之家 1421

设计模式精讲 | 笔记(五) | 抽象工厂模式coding与源码分析

本章主要介绍抽象工厂模式。 1.抽象工厂模式介绍 工厂方法模式针对的就是产品等级结构 而抽象方法模式针对的就是产品族 我们只要在美的产品族里面取空调,取出来的肯定是美的的空调,我们在美的的产品族里面取冰箱,取出来的肯定也是美的的电冰箱,只要我们确定这个产品的产品族和产品等级结构,我们就可以唯一的确定这个产品。 从理论上来说:当一个工厂可以创建出分属于不同产品等级...

Coder编程的博客 569

利用 SAP Joule 提升 ABAP 开发效率的前提条件与限制全解析

综上,想要在 ABAP Development Tools 中顺利使用 SAP Joule,既要准备好 BTP、IAS、ABAP 系统与 ADT 的版本与信任链,也要理解许可证、配额、语法范围等限制。只有在这些前提全部满足后,Joule 才能真正发挥生成式 AI 的价值,帮助 ABAP 开发者从繁琐模板中解放出来,把注意力投入在业务创新与 Clean Core 改造之上。未来 SAP 还将扩展中文语境、自动修复建议以及跨系统智能代理等功能,值得持续关注。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 663

从“抽象工厂方法”总结三大工厂模式

As weall known,物理学中的“绝对零度”是实现不了的,“绝对光滑”也是实现不了的,回头看三大工厂,尽管一直在不断优化,“开放-封闭”原则也是不能绝对实现的。

暂七师师长常乃超 1690

6.8 点云相关软件——CoProcess

摘要 CoProcess是华测导航研发的三维点云全流程处理平台,支持海量数据浏览、编辑及多类型成果输出,适配地形测绘、道路建设等行业需求。软件采用模块化设计,包含基础功能(数据导入、分类、建模等)和行业定制模块(地形、道路、矿山等),支持多格式数据交互与自动化处理,显著提升作业效率。相比Lidar360,CoProcess操作更简便、性价比更高;相比开源工具CloudCompare,其行业适配性与专业功能更优。2025版本优化了数据处理性能与智能算法,需授权激活高级功能,适合商业项目应用。

qq625924821的博客 248

124、LLC谐振变换器的矩阵变压器设计

摘要 本文分享了LLC谐振变换器中矩阵变压器的实战设计经验。针对大功率LLC单颗变压器的痛点(绕组层数多、散热不均、漏感一致性差),作者提出将大变压器拆分为多个小变压器单元(建议6个),通过原边串联、副边并联的方式实现功率分配。详细解析了磁芯选型、匝比计算、绕组结构、漏感控制和散热设计等关键参数,特别强调了小磁芯优势、等效匝比计算误区以及三明治绕法的重要性。文中还总结了调试过程中的谐振频率偏移和均流问题解决方案,并给出了矩阵数量选择、磁芯材质、绝缘材料等实用建议。作者指出,矩阵变压器在2kW以上LLC应用中

Jack010169的博客 170

(五)抽象工厂模式详解

作者:zuoxiaolong8810(左潇龙),转载请注明出处。 前两章我们已经讨论了两种有关工厂的模式,今天我们来看最后一种与工厂相关的模式,抽象工厂模式。 抽象工厂模式算是工厂相关模式的终极形态,如果各位完全理解了上一章的工厂方法模式,那么抽象工厂模式就很好理解了。它与工厂方法唯一的区别就是工厂的接口里是一系列创造抽象产品的方法,而不再是一个,而相应的,抽象产品也不再是一个了,而是一系列相...

v5browser 321

【项目实战】Java9的新特性模块化(Module)

Java 9引入了模块化系统,称为"Java Platform Module System"(JPMS)这个系统允许将Java程序分成模块,每个模块都有自己的规范,可以明确地声明它依赖于哪些其他模块,并且只能访问被其所依赖的模块暴露的API。这样可以模块化就是增加了更高级别的聚合,是Package的封装体。Package是一些类路径名字的约定,而模块是一个或多个Package组成的封装体。

奶爸的编程之路,也就一周冷个三天 1896

Java 中的 23 种设计模式详解

项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

微笑听雨 7万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

23种设计模式——抽象工厂模式(Abstract Factory Pattern)详解

本文介绍了23种设计模式之——抽象工厂模式(Abstract Factory Pattern)的说明及使用

Meteors.的博客 1246

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Abstract Factory抽象工厂模式(Java代码实现)——创建型模式

在本人所编写的关于23种设计模式的文章中,前言基本上都是一样的,读者可以从章节2开始阅读,本篇是关于创建型模式中抽象工厂模式(Abstract Factory Pattern)的详解。 文章目录1.前言 1.前言 根据Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用面向对象软件的基础) 一书,四位作者把设计模式分为三大类,分别如下: 1.创建型模式 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑

MrYushiwen的博客 1938

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

2.Java设计模式-----抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式(Abstract Factory),是23种设计模式之一。抽象工厂模式是这样子定义的: 抽象工厂模式,提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。 在学习抽象工厂模式之前,最好熟悉简单工厂模式以及工厂方法模式,这样对理解抽象工厂模式会有一定帮助,而且抽象工厂模式是基于工厂方法模式而来的。如果你还没有了解到什么是简单工厂模式以及工厂方法模式...

扛麻袋的少年的博客 1455

Java23种设计模式 抽象工厂模式【Abstract Factory Pattern】

  本文章转载大佬CBF4LIFE的文章 博客地址:https://www.cnblogs.com/cbf4life/           好了,我们继续上一节课,上一节讲到女娲造人,人是造出来了,世界时热闹了,可是低头一看,都 是清一色的类型,缺少关爱、仇恨、喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍脑袋, Shit!忘记给人类定义性别了,那怎么办?抹掉重来,然后就把人类重新洗牌...

宇智波带土 207

JAVA23种设计模式之抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。 介绍 意图 :提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 主要解决:解决接口选择的问题。 使用时机:产品有多于一个的产品族,而系统只消费其中某一族的产品。 优点

fuu123f的博客 196

Java GoF 23种设计模式-创建型模式-抽象工厂模式(Abstract Factory Pattern)

文章目录一、模式定义二、模式动机三、模式结构四、代码实现4.1 Sender产品及其实现4.2 Logger产品及其实现4.3 工厂类及其实现4.4 测试及运行结果 一、模式定义 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于创建型模式。 抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形态。 抽象工厂模式与工厂方法模式最大的区别在于: 工厂方法模式: 一个抽象产品类,可

WU4566285的博客 444

【设计模式】——抽象工厂Abstract Factory

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33881140的博客 192

Java 23 种设计模式

/ 产品族:Button + TextField 是一套// Windows 风格} }} }// Mac 风格} }} }// 抽象工厂 — 创建产品族一句话:普通工厂一个方法一种产品,抽象工厂一个方法多个关联产品。// 计算 "1 + 2 - 3"right = r;// 使用// 3一句话:很少用,JDK 的就是。创建型 — 怎么 new单例(一个)→ 工厂(子类决定)→ 抽象工厂(产品族)→ 建造者(分步构造)→ 原型(克隆)结构型 — 类/对象怎么组合。

鲜衣怒马少年时,不负韶华行且知。 从第一个Hello World起,便踏上这条后端修行路。趟过分布式事务的浑水,翻过性能瓶颈的高山,方知代码如剑,需千锤百炼方显锋芒。 博客所记,皆为修行路上的顿悟与磕绊,愿与同道人共勉,稳步江湖。 318

**23 种 GoF 设计模式分类表**(按创建型、结构型、行为型三大类组织),并标注各模式的类型归属(类创建型 / 对象创建型)及核心意图

| | **Singleton(单例)** | 对象创建型 | 确保一个类仅有一个实例,并提供全局访问点 | | **结构型** | **Adapter(适配器)** | 类/对象均可 | 将一个类的接口转换成客户期望的另一接口 | | | **Bridge(桥接)** | 对象创建型 | 将抽象与实现解耦,使二者可独立变化 | | | **Composite(组合)**

[Blog][Domain] programb.blog.youkuaiyun.com 1661

Java 23 种设计模式:从踩坑到精通 —— 开篇及系列介绍

摘要:本文是《Java 23种设计模式:从踩坑到精通》系列的总入口与导航页。文章梳理了设计模式的起源与三大分类,结合SOLID六大原则,详解为什么2026年设计模式依然重要。提供25篇完整目录、面试高频Top10速记、场景速查索引、易混模式对比表及分级阅读路线,可作为长期收藏的设计模式学习手册。

折哥|智能物流与Java实战,副高数据库工程师。深耕出版社物流WMS/OMS(线体/立库/VGA),也分享Java进阶与OMS电商对接。Oracle→PG实战派。相信沉淀可迁移能力,分享通用技术,不藏不虚。 3581

java 23 种设计模式-02-抽象工厂模式(abstract factory)

目录 目录 抽象工厂模式 介绍 优点 缺点 实际应用 应用实例: 使用场景: 注意事项 代码 接口 & 工厂 常量 具体子类 工厂实现 颜色实现 形状实现 测试 & 结果 UML & Code UML Code 目录导航 抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该...

4万+

Java-23个设计模式 Abstract Factory 抽象工厂模式

Abstract Factory 一系列相互依赖的对象的创建工作 (提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类) ① 创建抽象工厂SoftWareFactory(生成一个软件,iOS平台或者Android平台) /** * 软件工程基类 * 一个软件在多个平台的应用iOS和Android */ public abstract class SoftWar...

weixin_42321815的博客 136
上一篇: Java23种设计模式的研究之一(工厂方法模式(Factory Method))
路无平坦
博客等级 码龄10年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值