# java-architecture-demos **Repository Path**: cxuq/java-architecture-demos ## Basic Information - **Project Name**: java-architecture-demos - **Description**: 本项目包含20个独立的Java Demo,每个Demo演示一种经典的可扩展架构模式 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-04 - **Last Updated**: 2026-08-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java Architecture Demos - 20种经典Java可扩展架构剖析 本项目包含20个独立的Java Demo,每个Demo演示一种经典的可扩展架构模式。 ## 架构列表 | # | 架构模式 | 模块名 | 说明 | |---|---------|--------|------| | 1 | SPI (Service Provider Interface) | 01-spi-demo | 通过约定文件,动态发现并加载实现类 | | 2 | 责任链模式 (Chain of Responsibility) | 02-chain-of-responsibility-demo | 请求沿着链条传递,直到被某个处理器处理 | | 3 | IOC/AOP | 03-ioc-aop-demo | 控制反转和面向切面增强,解耦业务与公共逻辑 | | 4 | 插件化架构 (Plugin) | 04-plugin-architecture-demo | 通过插件扩展功能,宿主与插件解耦 | | 5 | 微内核架构 (Microkernel) | 05-microkernel-demo | 内核提供最小核心能力,扩展通过扩展点完成 | | 6 | Pipeline 管道模式 | 06-pipeline-demo | 请求在管道中依次经过一系列处理阶段 | | 7 | DSL 领域特定语言 | 07-dsl-demo | 通过自定义语言描述业务逻辑 | | 8 | 规则引擎 | 08-rule-engine-demo | 将规则与代码分离,动态配置与执行规则 | | 9 | 配置中心 | 09-config-center-demo | 集中管理配置信息,支持动态推送与刷新 | | 10 | 状态机模式 (State Machine) | 10-state-machine-demo | 对象在不同状态间切换,行为随状态变化 | | 11 | 动态代理模式 | 11-dynamic-proxy-demo | 运行时动态生成代理,增强或控制目标对象 | | 12 | 注解驱动架构 | 12-annotation-driven-demo | 通过注解声明配置信息,框架自动装配与处理 | | 13 | 事件驱动架构 | 13-event-driven-demo | 通过事件异步解耦系统,提高扩展性 | | 14 | 观察者模式 | 14-observer-pattern-demo | 主题状态变化时,通知所有观察者 | | 15 | 策略模式 | 15-strategy-pattern-demo | 将算法封装成策略,运行时可替换 | | 16 | 模板方法模式 | 16-template-method-demo | 定义算法骨架,具体步骤由子类实现 | | 17 | 适配器模式 | 17-adapter-pattern-demo | 将不兼容的接口转换为客户端期望的接口 | | 18 | 装饰器模式 | 18-decorator-pattern-demo | 不改变原对象,动态增强功能 | | 19 | ClassLoader 扩展 | 19-classloader-demo | 自定义ClassLoader,实现隔离与扩展加载 | | 20 | Java Agent 扩展 | 20-java-agent-demo | 运行时增强字节码,实现无侵入扩展 | ## 技术栈 - Java 17 - Maven (多模块项目) - JUnit 5 - SLF4J - Lombok ## 运行方式 每个模块都是独立的Maven项目,可以单独编译和运行: ```bash # 编译所有模块 mvn clean compile # 运行某个模块的测试 mvn test -pl 01-spi-demo # 运行某个模块的Main类 mvn exec:java -pl 01-spi-demo -Dexec.mainClass=com.architecture.demo.Main ```