首页 > 其他分享 >抽象工厂模式

抽象工厂模式

时间:2024-07-04 10:30:59浏览次数:23  
标签:use author class Hui 模式 工厂 抽象 Override public

文章目录

抽象工厂模式

定义个抽象父类,抽象父类中定义一个抽象的创建对象的方法,然后由子类来创建一系列相关的产品或者依赖簇,不同于工厂方法适用于单个产品。

案例

抽象工厂模式.drawio

代码

定义多个产品以及多个实现类

/**
 * 抽象产品:ProductA
 * 
 */
public interface ProductA {

    void use();
}



/**
 * 具体产品 ProductA1
 *
 * @author: Hui
 **/
public class ProductA1 implements ProductA{
    @Override
    public void use() {
        System.out.println("ProductA1 use ~~~ ");
    }
}


/**
 * 具体产品 ProductA2
 *
 * @author: Hui
 **/
public class ProductA2 implements ProductA{
    @Override
    public void use() {
        System.out.println("ProductA2 use ~~ ");
    }
}

/**
 * 抽象产品:ProductB
 * 
 */
public interface ProductB {

    void use();
}


/**
 * 具体产品 ProductB1
 *
 * @author: Hui
 **/
public class ProductB1 implements ProductB{
    @Override
    public void use() {
        System.out.println("ProductB1 use ~~~ ");
    }
}

/**
 * 具体产品 ProductB2
 *
 * @author: Hui
 **/
public class ProductB2 implements ProductB{
    @Override
    public void use() {
        System.out.println("ProductB2 use ~~~ ");
    }
}

定义抽象工厂以及多个的子类工厂

/**
 *  抽象工厂
 *
 * @author: Hui
 **/
public abstract class AbsFactory {

    public abstract ProductA createProductA();
    public abstract ProductB createProductB();

}

/**
 * 具体工厂 1
 *
 * @author: Hui
 **/
public class ConcreteFactory1 extends AbsFactory{
    @Override
    public ProductA createProductA() {
        return new ProductA1();
    }

    @Override
    public ProductB createProductB() {
        return new ProductB1();
    }
}


/**
 * 具体工厂 2
 *
 * @author: Hui
 **/
public class ConcreteFactory2 extends AbsFactory{
    @Override
    public ProductA createProductA() {
        return new ProductA2();
    }

    @Override
    public ProductB createProductB() {
        return new ProductB2();
    }
}

客户端使用

/**
 * 客户端
 *
 * @author: Hui
 **/
public class Client {

    public static void main(String[] args) {
        AbsFactory factory = new ConcreteFactory1();
        System.out.println("产品1 ~~~ ");
        factory.createProductA().use();
        factory.createProductB().use();

        factory = new ConcreteFactory2();
        System.out.println("产品2 ~~~ ");
        factory.createProductA().use();
        factory.createProductB().use();


    }
}

输出结果

image-20240702103530466

标签:use,author,class,Hui,模式,工厂,抽象,Override,public
From: https://blog.csdn.net/m0_64372868/article/details/140172156

相关文章

  • 采用Java语言+开发工具 Idea+ scode数字化产科管理平台源码,产科管理新模式
    采用Java语言+开发工具Idea+scode数字化产科管理平台源码,产科管理新模式数字化产科管理系统是现代医疗信息化建设的重要组成部分,它利用现代信息技术手段,对孕产妇的孕期管理、分娩过程及产后康复等各个环节进行数字化、智能化管理,以提升医疗服务质量和效率;以下是对数字化......
  • IDA7.7 使用IDAPython搜索指定模式的二进制数据方法
    新版的ida弃用了idc.find_binary推荐使用ida_bytes.bin_search方法。ida_bytes.bin_search需要和ida_bytes.parse_binpat_str配合使用。ida_bytes.parse_binpat_str的功能类似于对正则表达式进行编译。ida_bytes.parse_binpat_str官方文档importida_bytesimportidaapiimpo......
  • 图解CPU的实模式与保护模式
    作者:小牛呼噜噜大家好,我是呼噜噜,由于x86保护模式是比较复杂晦涩的,所以特地单拉出来,实模式和保护模式一个重要的更新就是对内存的管理与保护,并且随着软件的发展,为了极致地压榨CPU的性能,硬件和软件都做出了许多努力,为了更好的管理内存,引入分段,分页,段页等等。本文会沿着内存的主......
  • java设计模式(十二)享元模式(Flyweight Pattern)
    1、模式介绍:        享元模式是一种结构型设计模式,旨在通过共享对象来有效支持大量细粒度的对象。它通过将对象的状态分为内部状态(可共享)和外部状态(不可共享)来减少内存消耗和提高性能。内部状态存储在享元对象内部,而外部状态则由客户端代码管理和传递。2、应用场景:......
  • 【重走编程路】设计模式概述(三) -- 单例模式
    文章目录前言设计模式详解3.单例模式(Singleton)问题解决方案应用场景实现代码1.懒汉式单例模式2.加锁的懒汉式单例模式3.饿汉式单例模式4.静态内部变量(c++11)5.call_once实现懒汉单例前言创建型模式主要关注对象的创建过程,提供了一种创建对象的最佳方式,并隐......
  • 2024.07.03【读书笔记】|医疗科技创新流程(第二章 创新创造 商业模式基础)
    目录一级目录二级目录三级目录4.4商业模式基础引言商业模式定义商业模式的重要性商业模型的筛选影响客户与创新互动的主要因素商业模式的选择商业模式的变革创新者的角色总结一级目录二级目录三级目录4.4商业模式基础引言在医疗设备领域,商业模式通常是指如......
  • 基于Java+Vue的智慧园区管理系统:创新园区运营模式,构建全方位企业服务体系(代码分享)
     前言:智慧园区管理系统是一个集成了多种功能的综合性系统,旨在通过信息化、智能化手段提升园区的管理效率和服务质量。以下是针对系统的各个功能模块的简要描述:一、楼栋管理会务管理:管理园区内的会议预约、会议室使用等。园区信息:展示园区的基本信息,如位置、面积、规划等。......
  • Jmeter使用CLI模式进行负载测试的注意点
    在我们打开Jmeter的时候,窗口会出现如下提示:这个提示的意思是,不要使用GUI模式进行负载测试:GUI模式主要用于创建和调试测试,而不是运行大规模的负载测试。​使用CLI模式进行负载测试:CLI模式(以前称为NONGUI模式)更适合进行负载测试,因为它能够更高效地使用系统资源,避免了G......
  • 使用CMD命令.修改为Win 7传统右键菜单模式
    @echoofftitleH之尘.右键菜单%窗口标题%:menucolor02clsecho~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~echo~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~echo欢迎使用H之尘脚本echo.echo请选择项目():echo.&echo【1】修改为Win7传统右键菜单模式echo.&e......
  • 数据结构第3节: 抽象数据类型
    第3节:基础概念-抽象数据类型(ADT)抽象数据类型(ADT)是一种逻辑上的数学模型,以及定义在此数学模型上的一组操作。ADT通常隐藏了底层实现的细节,只暴露出一个可以被外界访问和操作的接口。在Java中,ADT可以通过接口(interface)来定义,并通过类(class)来实现。2.3.1抽象数据类型的定......