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

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…

相关文章:

  • FPGA中的“BPI“指什么
  • CPU服务器的主要功能有哪些?
  • 【Java Web】5.Mybatis
  • 零基础远程连接课题组Linux服务器,安装anaconda,配置python环境(换源),在服务器上运行python代码【2/3 适合小白,步骤详细!!!】
  • 基于Python爬虫技术的对歌曲评论数据可视化分析系统
  • pythonday30
  • Linux基础I/O【文件理解与操作】
  • 嵌入式高级工程师面试全解:从 malloc 到 kernel panic 的系统知识梳理
  • 从0开始学习R语言--Day11--主成分分析
  • Winfrom中使用chart控件
  • Milvus索引操作和最佳实践避坑指南
  • WPF命令与MVVM模式:打造优雅的应用程序架构
  • Milvus向量数据库DML操作实战教程
  • uniapp-商城-72-shop(5-商品列表,步进器添加商品到的购物车实现)
  • 动态防御新纪元:AI如何重构DDoS攻防成本格局
  • 【教程】给Apache服务器装上轻量级的防DDoS模块
  • 【自用资源分享】Protocol Buffers 构建脚本: 支持生成 ​C++、Go、Python、Java 的 Protobuf 和 gRPC 代码
  • 计算机视觉---YOLOv3
  • Jenkins实践(8):服务器A通过SSH调用服务器B执行Python自动化脚本
  • Rust编程环境安装
  • 快速做彩平图得网站/sem与seo的区别
  • 好网站建设公司哪家好/百度爱采购关键词优化
  • 运城 网站建设/优书网首页
  • 网站维护的主要工作/seo网络优化推广
  • 电商网站推广怎么做/百度站长工具数据提交
  • 南京网站建设招聘/优化公司排名