抽象工厂 Abstract Factory

2024-05-11 04:32
文章标签 抽象 工厂 abstract factory

本文主要是介绍抽象工厂 Abstract Factory,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

父博文地址:设计模式 - Design Patterns


一、是什么?

作用:

  1. 当我需要创建一个产品家族(很多产品)时,我可以使用抽象工厂。

  2. 客户通过抽象接口来创建产品家族,而不需要知道实际产出的具体产品类型。

  3. 实现了解耦客户和具体产品。

行为

  • 定义一个抽象工厂接口,每个抽象工厂的子类都能创建所有产品家族的产品。

这里写图片描述

二、实例

  1. 上面类图的实现

    其它代码就不给了按照类图就能写出来,这里只给出客户的代码:

    public class Client {public static void main(String[] args) {// 客户选择使用某一个具体的工厂AbstractFactory abstractFactory = new ConcreteFactory1();// 然后就可以任意创建产品族中的产品,而不需要知道具体的产品(只知道抽象产品AbstractProductA/AbstractProductB)AbstractProductA productA = abstractFactory.createProductA();System.out.println(productA.getClass().getSimpleName());AbstractProductB productB = abstractFactory.createProductB();}
    }

三、问答

  1. 抽象工厂的每个方法,看起来都像是工厂方法?

    没错,就是这样。

  2. 抽象工厂和工厂方法创建对象方式的不同?

    工厂方法在类(Class)层面,通过继承以及覆盖来创建对象。新增一个产品时只需要新建一个Class

    抽象工厂在组合(Composition)层面。新增一个产品必须改变接口以及重新实现子工厂的方法。

    新增时有以上差别,只是因为工厂方法只有一个抽象产品,而抽象工厂有多个抽象产品。


  • 1.1 工厂方法 Factory Method

  • 1.1.1 简单工厂 SimpleFactory

这篇关于抽象工厂 Abstract Factory的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/978512

相关文章

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

设计模式之工厂模式(通俗易懂--代码辅助理解【Java版】)

文章目录 1、工厂模式概述1)特点:2)主要角色:3)工作流程:4)优点5)缺点6)适用场景 2、简单工厂模式(静态工厂模式)1) 在简单工厂模式中,有三个主要角色:2) 简单工厂模式的优点包括:3) 简单工厂模式也有一些限制和考虑因素:4) 简单工厂模式适用场景:5) 简单工厂UML类图:6) 代码示例: 3、工厂方法模式1) 在工厂方法模式中,有4个主要角色:2) 工厂方法模式的工作流程

工厂方法模式和抽象工厂模式的区别

区别  工厂方法模式: 一个抽象产品类,可以派生出多个具体产品类。    一个抽象工厂类,可以派生出多个具体工厂类。    每个具体工厂类只能创建一个具体产品类的实例。 抽象工厂模式: 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。    一个抽象工厂类,可以派生出多个具体工厂类。    每个具体工厂类可以创建多个具体产品类的实例。    区别: 工厂方法模式只有一个抽象产品类

c++11工厂子类实现自注册的两种方法

文章目录 一、产品类构建1. 猫基类与各品种猫子类2.狗基类与各品种狗子类 二、工厂类构建三、客户端使用switch-case实现调用不同工厂子类四、自注册方法一:公开注册函数显式注册五、自注册方法二:构造函数隐形注册总结 一、产品类构建 1. 猫基类与各品种猫子类 class Cat {public:virtual void Printer() = 0;};class

智能工厂程序设计 之1 智能工厂都本俱的方面(Facet,Aspect和Respect)即智能依赖的基底Substrate 之1

Q1、昨天分别给出了三个智能工厂的 “面face”(里面inter-face,外面outer-face和表面surface) 以及每个“面face” 各自使用的“方”(StringProcessor,CaseFilter和ModeAdapter)  。今天我们将继续说说三个智能工厂的“方面” 。在展开之前先看一下三个单词:面向facing,取向oriented,朝向toword。理解这三个词 和

设计模式(1)-- 工厂模式

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

Java基础入门 【第七章 抽象、接口、内部类、枚举】(二)

匿名内部类书写格式: 父类或接口类型变量名=new父类或接口(构造方法实参列表){ //重写所有的抽象方法 @Override public返回值类型method1(形参列表){ 方法体实现 } @Override public返回值类型method2(形参列表){ 方法体实现 } //省略... }; //匿名内部类对象调用方法 变量名.重写方法(实参列表); 匿名

变压器制造5G智能工厂工业物联数字孪生平台,推进制造业数字化转型

变压器制造5G智能工厂工业物联数字孪生平台,推进制造业数字化转型。作为传统制造业的重要组成部分,变压器制造行业也不例外地踏上了数字化转型的快车道。而变压器制造5G智能工厂物联数字孪生平台的出现,更是为这一进程注入了强大的动力,不仅极大地提升了生产效率,还推动了整个行业的智能化、精细化发展。 5G智能工厂,是基于5G通信技术和物联网(IoT)的深度融合而构建的智能制造体系。它利用5G网络的高速度、

发动机制造5G智能工厂工业物联数字孪生平台,推进制造业数字化转型

发动机制造作为高端制造业的核心领域之一,正积极探索并引领这一变革。其中,发动机制造5G智能工厂物联数字孪生平台的兴起,不仅为发动机制造业注入了新的活力,也为整个制造业的数字化转型树立了新的标杆。发动机制造5G智能工厂物联数字孪生平台,是基于5G通信技术、物联网(IoT)、大数据、人工智能(AI)及数字孪生技术等多领域深度融合的产物。 工业物联网技术将发动机制造工厂内的各类设备、传感器等物体互联互

王立平--AES加密图片实现 SkImageDecoder::Factory return null

这个问题是在加密图片,存入sd卡,在解密出来展示,出现的。我个人研究了很久没解决。最后经过高人指点,终于解决了。 在此,拿出来分享,希望各位少走弯路。 我之前的设计思路是:(可以不看哦) 1.把图片从drawable读入成bitmap 2.bitmap-->byte 3.调用AES的byte加密算法。 4.加密成byte,在转化为string 5,把string存入sd卡。