GoF23种设计模式之创建型模式之抽象工厂模式

C++进阶(语法篇)—第11章 设计模式 11.设计模式 11.1 GoF和Design Patterns 1994年,由4位大牛(GoF)合著出版了《Design Patterns: Elements of Reusable Object-Oriented Software》一书,中文翻译为《设计模式》。该书首次提出了软件开发中设计模式的概念,将设计模式规范化并提升到了理论高度。在书中提及了23种设计模式,这些模式可以分为3类:创建... 阅读详情

一、概述

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

二、适用性

1.一个系统要独立于它的产品的创建、组合和表示的时候。

2.一个系统要由多个产品系列中的一个来配置的时候。

3.当你要强调一系列相关的产品对象的设计以便进行联合使用的时候。

4.当你提供一个产品类库,而只想显示它们的接口而不是实现的时候。

三、参与者

1.AbstractFactory:声明一个创建抽象产品对象的操作接口。

2.ConcreteFactory:实现创建具体产品对象的操作。

3.AbstractProduct:为一类产品对象声明一个接口。

4.ConcreteProduct:定义一个将被相应地具体工程创建的产品对象。实现AbstractProduct接口。

5.Client:仅使用由AbstractFactory和AbstractProduct类声明的接口。

四、类图


五、示例

AbstractFactory

package cn.lynn.abstractfactory;

public interface IAnimalFactory {

    public IMouse createMouse();

    public ICat createCat();

}
ConcreteFactory
package cn.lynn.abstractfactory;

public class WhiteAnimalFactory implements IAnimalFactory {

    @Override
    public IMouse createMouse() {
        return new WhiteMouse();
    }

    @Override
    public ICat createCat() {
        return new WhiteCat();
    }

}
package cn.lynn.abstractfactory;

public class BlackAnimalFactory implements IAnimalFactory {

    @Override
    public IMouse createMouse() {
        return new BlackMouse();
    }

    @Override
    public ICat createCat() {
        return new BlackCat();
    }

}
AbstractProduct
package cn.lynn.abstractfactory;

public interface IMouse {

    public void eat();

}
package cn.lynn.abstractfactory;

public interface ICat {

    public void eat();

}
ConcreteProduct
package cn.lynn.abstractfactory;

public class WhiteMouse implements IMouse {

    @Override
    public void eat() {
        System.out.println("白老鼠偷吃花生!");
    }

}
package cn.lynn.abstractfactory;

public class BlackMouse implements IMouse {

    @Override
    public void eat() {
        System.out.println("黑老鼠偷吃花生!");
    }

}
package cn.lynn.abstractfactory;

public class WhiteCat implements ICat {

    @Override
    public void eat() {
        System.out.println("白猫贪吃咸鱼!");
    }

}
package cn.lynn.abstractfactory;

public class BlackCat implements ICat {

    @Override
    public void eat() {
        System.out.println("黑猫贪吃咸鱼!");
    }

}
Client
package cn.lynn.abstractfactory;

public class Client {

    public static void main(String[] args) {
        IAnimalFactory whiteAnimalfactory = new WhiteAnimalFactory();
        IMouse whiteMouse = whiteAnimalfactory.createMouse();
        whiteMouse.eat();
        ICat whiteCat = whiteAnimalfactory.createCat();
        whiteCat.eat();
        
        IAnimalFactory blackAnimalfactory = new BlackAnimalFactory();
        IMouse blackMouse = blackAnimalfactory.createMouse();
        blackMouse.eat();
        ICat blackCat = blackAnimalfactory.createCat();
        blackCat.eat();
    }

}
Result
白老鼠偷吃花生!
白猫贪吃咸鱼!
黑老鼠偷吃花生!
黑猫贪吃咸鱼!

一个很好的抽象工厂实例 这是一个抽象工厂的经典实例,内附源码,数据库,用法说明 立即下载

相关推荐

Camera mipi通信协议

MIPI(移动行业处理器接口),是的缩写。MIPI移动行业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准。分别定义了一系列的手机内部接口标准,比如摄像头接口CSI、显示接口DSI,其中是由MIPI联盟下Camera工作组指定的接口标准。CSI-2是MIPI CSI第二版,主要由应用层、协议层、物理层组成,最大支持4通道数据传输、单线传输速度高达1Gb/s。

arvin_xiong的博客 3730

设计模式之工厂模式(l流水线模式)

1.简介 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 2.介绍 意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行...

行者 2221

保姆级QFIL线刷教程:从驱动安装到成功刷机的完整避坑指南(Win10/11实测)

本文提供了一份详细的QFIL线刷教程,涵盖从驱动安装到成功刷机的完整流程,特别针对Win10/11系统进行了实测。文章重点解决了EDL模式下的常见问题,如Download Fail和COM Port识别错误,并提供了实用的避坑技巧和故障排除方案,帮助用户实现零失误操作。

weixin_29245767的博客 763

23种设计模式-创建型模式-工厂模式(包括工厂方法模式和抽象工厂模式)

hh

诚 301

华为防火墙双线路配置实战:5分钟搞定主备自动切换(含健康检查避坑指南)

本文详细介绍了华为防火墙双线路配置实战,包括主备自动切换和健康检查机制的优化技巧。通过智能健康检查机制,华为防火墙能实现毫秒级故障自动切换,确保网络高可用性。文章提供了从架构设计到实战配置的全流程指南,并分享了常见配置误区与解决方案,帮助中小企业快速搭建稳定可靠的网络架构。

weixin_30872337的博客 604

从零组装一台会‘看’的无人机:手把手教你配置NUC机载电脑与D435深度相机(环境搭建篇)

本文详细介绍了如何从零开始组装一台具备视觉能力的智能无人机,重点讲解了NUC机载电脑与D435深度相机的配置方法。通过Ubuntu系统安装、ROS环境搭建、深度学习框架配置等步骤,帮助开发者实现无人机的自主避障和目标跟踪功能。文章还提供了性能优化和常见问题解决方案,是无人机视觉系统开发的实用指南。

weixin_30915275的博客 397

设计模式 - 抽象工厂模式案例

抽象工厂模式适用的环境,抽象工厂模式vs工厂方法模式,产品等级结构和产品族的概念,模式结构的4个角色,抽象工厂模式案例及代码:计算机包含内存(RAM),CPU等硬件设备,根据如图所示的“产品等级结构-产品族示意图”,使用抽象工厂模式实现计算机设备创建过程并绘制类图

qq_48457459的博客 7294

Keil uVision5 STM32 startup_stm32f10x_md_vl.s error A3906U Malformed via file target not created..

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 2774

抽象工厂模式举例

在客户端中,通过创建具体工厂对象并调用其创建产品的方法,可以获取到具体的产品对象。由于客户端只依赖产品的抽象类而不依赖具体的产品类,因此可以很方便地进行扩展和修改。可以保证产品的一致性:一个工厂只负责生产同一产品族中的产品,保证所有产品都具有相同的风格和特点。具有良好的扩展性:当需要增加新的产品族时,只需要增加一个新的具体工厂类,不需要修改原来的代码。简单易用:客户端不需要知道具体产品类的名称,只需要知道所需产品的抽象类即可。定义了两个创建产品的方法,分别对应两个产品族中的产品。实现了具体的产品行为。

人工智能全栈工程师 | 智能算法研发与实战落地​专注于人工智能算法研究、代码实现与工程落地,提供从模型设计到部署应用的全流程解决方案。 440

YOLOv11的流形学习压缩:局部线性嵌入(LLE)引导的特征降维,实现在CSP模块中嵌入流形结构保持约束

摘要 本文探讨了流形学习在YOLOv11目标检测模型中的应用,重点研究局部线性嵌入(LLE)方法对CSP模块的特征压缩优化。针对深度学习模型的高维特征冗余问题,LLE通过三个关键步骤实现非线性降维:寻找k近邻、计算重构权重和低维嵌入,相比传统PCA方法能更好地保持数据的局部结构。文章详细分析了LLE的数学原理和参数选择策略,并提出在YOLOv11的CSP模块中嵌入流形约束的创新设计。通过特征分割前、处理过程和融合阶段引入流形一致性损失函数,该方法能在降低特征维度的同时保持原始流形结构,从而提升模型的计算效率

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1380

基于Simulink的PID控制防抱死制动系统(ABS)建模与仿真

防抱死制动系统(Anti-lock Braking System,简称ABS)是一种用于防止车辆在紧急制动时车轮完全抱死的技术。通过实时监测车轮速度并调节制动力,ABS能够显著提高车辆的制动性能和操控稳定性,从而减少交通事故的发生。PID(比例-积分-微分)控制器因其结构简单、性能稳定且易于实现而被广泛应用于ABS控制系统中。本项目旨在通过MATLAB/Simulink平台设计和验证一个基于PID控制的ABS系统,重点研究PID参数调优方法、系统动态响应特性以及制动过程中的滑移率控制能力。

MHD0815的博客 484

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

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

WU4566285的博客 444

30天入门 SAP BTP 开发系列之一:SAP 开发顾问为什么要学习 SAP BTP 开发?能带来哪些收获?

国内 SAP 开发顾问们的微信朋友圈,最近可能都被 SAP 和阿里这两家巨头宣布合作的重磅消息刷屏了吧。近日,德国软件巨头SAP SE与中国电商巨头阿里巴巴集团宣布建立战略合作伙伴关系。根据协议,阿里巴巴集团将利用 SAP Cloud ERP Private 强化企业基础设施,并采用联合上市策略为全球客户创造卓越价值。阿里巴巴将集成 SAP Business Suite,以简化系统维护与升级流程,并实现 AI 功能与核心业务流程的无缝整合。

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

使用Go实现GoF的23种设计模式(一)

前言 从1995年GoF提出23种设计模式到现在,25年过去了,设计模式依旧是软件领域的热门话题。在当下,如果你不会一点设计模式,都不好意思说自己是一个合格的程序员。设计模式通常被定义为: 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。 从定义上看,设计模式其实是一种经验的总结,是针对特定问题的简洁而优雅的解决方案。既然是经验总结,那么学习设计模式最直接的好处就在于可以站

ruanrunxue的博客 1617

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

设计模式(三)创建型:抽象工厂模式详解

抽象工厂是构建“可配置系统”的核心模式。在现代架构中,其思想已演进为“依赖注入容器”(如 Spring Context)、“服务定位器”或“配置驱动工厂”。

谦与谦寻的神隐 654

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

设计模式之抽象工厂模式(Abstract Factory)摘录

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

网络资源是无限的 2550

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

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

java设计模式(4)

GOF23种设计模式是非常经典的模式总结,大量应用于各种变成领域。下面列举下23种设计模式以及常见的设计模式。 创建型 1.Factory Method(工厂方法) 2. Abstract Factory(抽象工厂) 3. Builder(建造者) 4. Prototype(原型) 5. Singleton(单例) 结构型 6. Adapter Class/Object(适配器) 7. Bridg...

zhaoyouliang123的博客 213

第十四章 设计模式(2)

14.3 GOF设计模式及其应用 设计模式的定义为:模式是在一个上下文中,对一个问题的解决方案,GOF提出了模式的4要素,既模式名称、问题解决方案和效果 (1)模式名称(Pattern Name) 一个助记词,使用一两个描述模式问题,解决方案和效果。设计模式允许在较高抽象层次上进行设计,增添了设计词汇,可在书写文档时使用模式名 (2)问题(Problem) 描述了模式使用的场合和条件,描述设计的特定问题,解释设计问题存在的原因,描述导致不灵活设计的类或对象结构,有时还包含了模式应用必须满足的一系列

zhhzc的博客 1199

设计模式之-创建型

                    设计模式之-创建型                            GOF的23种设计模设可以分为三大类,创建型,结构型,行为型. 定义        所谓创建型模式,就是处理类或者对象创建的设计模式,试图根据实际情况使用合适的方式创建类和对象。基本的类和对象的创建方式可能会导致设计和维护上的问题,或增加了设计的复杂度。创建型模式通过以某种方式...

weixin_34375251的博客 82

六、GoF之工厂模式

六、GoF之工厂模式

既来之的博客 467

【设计模式】工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)详记

简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。

Etui۹(・༥・´)و的博客 1150

uml抽象工厂模式java_抽象工厂模式-Java设计模式笔记(三) | 六阿哥博客

抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,无需指定它们具体的类。属于创建型,也属于GOF23种设计模式。适用范围1.客户端(应用层)不依赖于产品类实例如何被创建、实现等细节。2.强调一系列相关的产品对象(属于同一产品族)一起使用创建对象需要大量重复的代码。3.提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于具体实现。优缺点优点:具体产品在应用层代码隔离,无需关心创...

weixin_29335033的博客 185

1.设计模式_01_创建型设计模式

本文摘要总结了GoF设计模式中的单例模式和工厂模式。单例模式确保类只有一个实例,分为饿汉式(类加载时创建)和懒汉式(使用时创建),后者需处理线程安全问题。工厂模式解决对象创建问题,包括简单工厂模式(静态工厂方法)、工厂方法模式和抽象工厂模式。简单工厂模式通过工厂类集中创建对象,实现生产消费分离,但不符开闭原则。文中提供了Java代码示例,展示单例模式的线程安全实现和工厂模式的产品角色设计。

u011488477的博客 1008

23种设计模式之创建型模式(单例、工厂方法、抽象工厂、生成器和原型模式)

概述 设计模式是针对某一类问题的最优解决方案,是从许多优秀的软件系统中总结出的。 Java中设计模式(java design patterns)通常有23种。 模式可以分成3类:创建型、行为型和结构型。 创建型模式 创建型模式涉及对象的实例化,特点是不让用户代码依赖于对象的创建或排列方式,避免用户直接使用new创建对象。 创建型模式有以下5个: 工厂方法模式、抽象工厂方法模式、生成器模式、原型模式和单例模式。 行为型模式 ...

qq_41469636的博客 1133
上一篇: GoF23种设计模式之创建型模式之原型模式
下一篇: GoF23种设计模式之创建型模式之建造者模式
innovation
博客等级 码龄14年 251粉丝 136原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值