首页 > 其他分享 >工厂模式应用

工厂模式应用

时间:2024-10-11 16:11:19浏览次数:6  
标签:applicationContext getEventType eventType void 模式 工厂 aEventEntity 应用 public

前言

https://www.cnblogs.com/handsometaoa/p/17025186.html

代码

工厂类:

@Component
public class XXEventHandlerFactory implements ApplicationContextAware {

    private ApplicationContext applicationContext;
    Map<Integer, XXEventHandler> handlerMap = new HashMap<>();

    @Override
    public void setApplicationContext(@NonNull ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }

    @PostConstruct
    private void afterPropertiesSet() {
        applicationContext.getBeansOfType(XXEventHandler.class).values()
                .forEach(handler -> handlerMap.put(handler.getEventType(), handler));
    }

    public XXEventHandler getHandler(Integer eventType) {
        return handlerMap.get(eventType);
    }
}

处理器接口:

public interface XXEventHandler {

    // 获取事件类型
    Integer getEventType();
    
    // 处理程序 (此处可定义为实体类,也可使用String)
    void handle(XXEventEntity eventDTO);

}

实际处理器实现:

@Component
public class AEventHandler implements XXEventHandler {

    @Override
    public Integer getEventType() {
        // 使用枚举类返回唯一标识该处理器的标记
        return XXEventEnum.A.getEventType();
    }

    @Override
    public void handle(XXEventEntity eventDTO) {
        // xxx 进行事件处理 
    }
}

使用

// 生产事件
XXEventEntity aEventEntity = new XXEventEntity();
aEventEntity.setEventType(XXEventEnum.A.getEventType());
aEventEntity.setXXX();
// 此处可以将 事件存进数据库/发送至消息队列



// 处理事件
// 1. 从数据库/消息队列获取事件
// 2. 获取aEventEntity eventType
// 3. 获取处理器 xXEventHandlerFactory.getHandler(eventType).handle(aEventEntity);

标签:applicationContext,getEventType,eventType,void,模式,工厂,aEventEntity,应用,public
From: https://www.cnblogs.com/handsometaoa/p/18458660

相关文章

  • Spring Boot应用开发
    SpringBoot是一种基于Spring框架的轻量级开发框架,它简化了Spring应用的开发过程,提供了自动化的配置方式以及丰富的生态和插件,非常适合用于快速构建和部署生产级别的Spring应用。以下是对SpringBoot应用开发的详细介绍:一、SpringBoot的核心思想及特性核心思想:SpringBoo......
  • VS Code安装C#开发工具包并编写ASP.NET Core Web应用
    前言    前段时间微软发布了适用于VSCode的C#开发工具包(注意目前该包还属于预发布状态但是可以正常使用),因为之前看过网上的一些使用VSCode搭建.NETCore环境的教程看着还挺复杂的就一直没有尝试使用VSCode来编写.NETCore。不过听说C#开发工具包提供了一系列功能和扩展,从而......
  • Visual Studio Code调试和发布ASP.NET Core Web应用
    前言上一篇文章主要讲了VisualStudioCode安装C#开发工具包并编写ASP.NETCoreWeb应用有兴趣的同学可以去看看,今天咱们主要是要讲讲如何在VSCode中调试和发布ASP.NETCoreWeb应用。VisualStudioCode安装C#开发工具包并编写ASP.NETCoreWeb应用配置launch.json文件launch.jso......
  • 大数据资产管理架构设计篇-来自《数据资产管理核心技术与应用》一书的权威讲解
    数据资产管理是一项系统而复杂的工程,涉及到元数据、数据血缘、数据质量、数据服务、数据监控、数据安全、数据权限等众多方面,为了更高效的管理好数据资产,因此在很多大型的企业或者组织中,通常会构建一个数据资产管理平台来管理这些各种各样的数据资产,数据资产管理平台通常会包含如......
  • Spark - [03] 资源调度模式
    题记部分 一、Local模式1.1、概述Local模式就是运行在一台计算机上的模式,通常就是用于在本机上练手和测试的。可以通过以下几种方式设置Master(1)local:所欲计算都运行在一个线程当中,没有任何并行计算,通常我们在本机执行一些测试代码,或者练手,就用这种模式。(2)local[K]:指定使......
  • 开源模型应用落地-从源代码构建和运行vLLM-以满足您更高的需求
    一、前言   通过vLLM源码构建Docker镜像有诸多显著的好处。首先,源码构建能够确保我们使用的是最新的功能,避免版本不一致带来的问题。其次,自定义构建过程使能够根据特定需求优化镜像,比如去除不必要的依赖或者添加自定义配置,从而提高镜像的性能和安全性。此外,Docker容器化的......
  • 京准电钟:GPS北斗卫星时钟服务器应用政务系统方案
    京准电钟:GPS北斗卫星时钟服务器应用政务系统方案京准电钟:GPS北斗卫星时钟服务器应用政务系统方案京准电子官微——ahjzsz摘要:随着电子政务的不断发展,许多省份都建立了自己的政务网络,使用的网络设备和服务器日益增多,这些设备都有自己的时钟,是可以调节的,因此网络中的所有设备和主......
  • Freertos应用与源码分析:临界区
    目录一、概述二、应用三、源码分析1、进入临界区2、退出临界区3、中断临界区(1)应用(2)进入中断临界区(3)退出中断临界区四、注意事项一、概述        当一个任务在使用某个资源的过程中,即还没有完全结束对资源的访问时,便被切出运行态,使得资源处于非一致,不完整......
  • 流域生态系统服务评价、水文水生态分析、碳收支、气候变化影响、制图等领域中的应用
    流域生态系统服务评价、水文水生态分析、碳收支、气候变化影响、制图等领域中的应用专题一、生态系统服务评价技术框架1.1生态系统服务概述1.2流域生态系统服务的分类与作用1.3生态系统服务评估方法专题二、AI大模型与生态系统服务评价2.1目前常用大模型介绍2.2......
  • Minio存储应用部署案例
    1.MinIO的发展背景随着云计算、人工智能和大数据技术的发展,数据存储面临越来越多的挑战。传统的文件系统和块存储已经无法应对海量的非结构化数据和多种数据格式带来的压力。对象存储作为一种新的存储方式,能够更好地应对这些挑战,尤其是对于视频、图片、备份数据等非结构化数......