当前位置: 首页 > ds >正文

Abstract Factory(抽象工厂)

Abstract Factory(抽象工厂)

前言

创建型
1.简单工厂 -->> 2.工厂方法 -->> 3.抽象工厂 -->> 4.生成器 -->> 5.原生 -->> 6.单例
1,接着23种设计模式,创建型模式的抽象工厂开始讲解
2,用自己的话理解是:抽象工厂【是生产一类产品或一系列相关的工厂,不需要指定具体的类】,比如手机工厂:小米手机工厂、华为手机工厂、OPPO手机工厂…
3.摘要:
本文介绍了抽象工厂模式(Abstract Factory),它是一种创建型设计模式,提供了一种创建一系列相关对象的接口而无需指定具体类。文章通过手机工厂示例进行说明,展示小米和华为两个工厂分别生产不同类型产品(屏幕、芯片、键盘等)的实现过程。代码演示了如何定义抽象工厂接口、具体工厂类和产品类,并展示了运行结果。该模式适用于需要创建产品族且不依赖具体产品类的情况,能够提高系统的灵活性和可扩展性。

1)意图

提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。

2)结构

在这里插入图片描述

代码如下:

/*** 抽象工厂demo*/
public class AbstractFactory {public static void main(String[] args) {// 小米生产线 开始制造System.out.println("小米生产线 开始制造-------------------------");Factory factory1 = new ConcreteFactory1();factory1.createProductA().info();factory1.createProductB().info();System.out.println("------------------分界线----------------------");// 华为生产线 继续开始制造System.out.println("华为生产线 继续开始制造-------------------------");Factory factory2 = new ConcreteFactory2();factory2.createProductA().info();factory2.createProductB().info();}}interface Factory{// 小米手机生产线ProductA createProductA();// 华为电脑生产线ProductB createProductB();
}/*** 华为电脑工厂*/
class ConcreteFactory2 implements Factory{@Overridepublic ProductA createProductA() {return new ProductA2();}@Overridepublic ProductB createProductB() {return new ProductB2();}
}/*** 小米手机工厂*/
class ConcreteFactory1 implements Factory{@Overridepublic ProductA createProductA() {return new ProductA1();}@Overridepublic ProductB createProductB() {return new ProductB1();}
}/*** 为一类产品声明一个接口 比如小米手机生产线*/
interface ProductA{void info();
}/*** 为另一类产品声明一个接口 比如华为手机生产线*/
interface ProductB{void info();
}class ProductB2 implements ProductB{@Overridepublic void info() {System.out.println("产品 B2 华为电脑显示器");}
}class ProductB1 implements ProductB{@Overridepublic void info() {System.out.println("产品 B1 小米芯片");}
}class ProductA1 implements ProductA{@Overridepublic void info() {System.out.println("产品 A1 小米屏幕");}
}class ProductA2 implements ProductA{@Overridepublic void info() {System.out.println("产品 A2 华为笔记本键盘");}
}

运行结果:如下
在这里插入图片描述
喜欢我的文章记得点个在看,或者点赞,持续更新中ing…

http://www.xdnf.cn/news/9262.html

相关文章:

  • FlagOS 新里程:开源面向多种硬件架构的统一AI 编译器 FlagTree
  • element-ui upload 组件源码分享
  • Android Cameara2 + MediaRecorder 完成录像功能
  • Prompt工程:解锁大语言模型的终极密钥
  • 解锁编程新境界:深入剖析现代编程技术与实践
  • spring4第2课-ioc控制反转
  • STM32CubeMX配置使用通用定时器产生PWM
  • 加密货币犯罪的涉案金额如何计算?
  • 编写一个算法frequency,统计在一个输入字符串中各个不同字符出现的频度。用适当的测试数据来验证这个算法
  • 打卡第29天:类的定义和方法
  • PDBfixer:蛋白质结构修复工具
  • CVE-2025-3248
  • 华为OD机试真题——区间交集(2025B卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • 知识宇宙-职业篇:软件测试工程师
  • Java—— 多线程 第一期
  • 存储引擎系列--LSM不同Compaction策略性能分析对比
  • STM32:Modbus通信协议核心解析:关键通信技术
  • 【大模型面试每日一题】Day 29:简单介绍一下混合精度训练的技术要点及潜在风险
  • Kubernetes Service 类型与实例详解
  • Mybatis中的两个动态SQL标签
  • (先发再改)测试流程标准文档
  • 【面试题】如何测试即时通信功能:A给B发送一条了信息:hello
  • ‌加密 vs 电子签名:公钥私钥的奇妙冒险
  • 大数据学习(121)-sql重点问题
  • IP2366调试问题总结
  • 第12次07 :邮箱的验证
  • 57、【OS】【Nuttx】编码规范解读(五)
  • ET CircularBuffer 类
  • Cadence学习笔记之---PCB过孔替换、封装更新,DRC检查和状态查看
  • 动态贴纸的实时渲染原理:美颜SDK中的特效引擎开发实录