【设计模式】核心设计模式实战


引言

>设计模式就是把变化封装起来,让代码对扩展开放、对修改关闭。

文章目录

引言

一、单例模式

[1.1 饿汉式单例](#1.1 饿汉式单例)

[1.2 懒汉式单例](#1.2 懒汉式单例)

[1.3 静态内部类](#1.3 静态内部类)

[1.4 枚举](#1.4 枚举)

[1.5 Bean注册](#1.5 Bean注册)

二、工厂模式

[2.1 简单工厂](#2.1 简单工厂)

[2.2 工厂方法模式](#2.2 工厂方法模式)

[2.3 抽象工厂](#2.3 抽象工厂)

[2.4 最佳实践](#2.4 最佳实践)

三、模板模式

​编辑

四、责任链模式

[4.1 链式实现](#4.1 链式实现)

[4.2 最佳实践](#4.2 最佳实践)

五、适配器模式

六、观察者模式

[6.1 观察实现](#6.1 观察实现)

[6.2 最佳实践](#6.2 最佳实践)

七、建筑者模式

八、装饰器模式

九、代理模式

[9.1 JDK动态代理](#9.1 JDK动态代理)

[9.2 CGLIB动态代理](#9.2 CGLIB动态代理)


一、单例模式

场景:全局唯一实例,无状态工具类,配置持有者

1.1 饿汉式单例

1.2 懒汉式单例

DCL机制

1.3 静态内部类

1.4 枚举

1.5 Bean注册

二、工厂模式

2.1 简单工厂

2.2 工厂方法模式

2.3 抽象工厂

抽象工厂就是将多个产品组合在一起的集合。

功能接口:

不同功能接口实现:

工厂组合接口:

不同工厂接口实现:

2.4 最佳实践

策略接口:

不同策略实现:

使用List或Map都会自动装配,如果是Map的情况,key值为beanName。

三、模板模式

场景:多个步骤流程一致,但是某些步骤的实现不同

四、责任链模式

场景:一个请求需要经过多个处理器,并且顺序可能调整

4.1 链式实现

核心就在抽象类本身持有自己的类型

在使用时执行顺序关系

4.2 最佳实践

通过@Order注解实现顺序

五、适配器模式

场景:兼容老接口或三方接口

sendSms内调用的方法名和入参均不相同,可能返回的结果都各不相同

六、观察者模式

场景:事件驱动,解耦生产和消费

6.1 观察实现

生产者核心通过List存储遍历给消费者

消费者

6.2 最佳实践

source通常指向生产者(事件来源),user就是要发送的数据

消费者异步处理

七、建筑者模式

通常使用@Builder注解即可,一般用于子类中

八、装饰器模式

场景:动态增强功能,而不改变原类

基本使用

九、代理模式

9.1 JDK动态代理

静态代理就是新建一个代理类,注入原始类对象,实现原始类接口时执行扩展方法和对象方法,一般不会用到。

jdk代理需要原始对象实现接口

9.2 CGLIB动态代理

相关推荐
en.en..2 分钟前
Linux mmap 内存映射深度解析:基于帧缓冲 /dev/fb0
java·服务器·前端
洋不写bug4 分钟前
链表补充练习,双链表的模拟实现
java·数据结构·链表·双链表·底层实现
后台模板学习8 分钟前
用 IM 即时聊天项目一次讲清消息去重算法的踩坑与解决方案
java·数据库·spring
秋名RG10 分钟前
2026/6/15 系统故障复盘与整改方案
java·架构
今天要早睡_12 分钟前
C++ 核心语法速过:命名空间、引用、函数重载与 nullptr 深度解析
android·java·c++
南讯股份Nascent15 分钟前
2026年CRM技术选型观察:当“数据打通“成为第一需求,电商CRM的架构价值在哪里
java·大数据·用户运营
心易行者20 分钟前
Python自动化测试7步落地法:用python在线运行省掉90%环境配置时间
java·开发语言·人工智能·python·log4j·ai编程
霸道流氓气质1 小时前
Spring AI 技术细节:VectorStore 多库统一抽象
java·人工智能·spring
今天AI了吗1 小时前
Codex 配置自定义 AI API 完整指南:从零到一接入你的专属模型
java·人工智能·python·数据分析·embedding
学长毕业设计1 小时前
基于SpringBoot的健康食谱管理系统的设计与实现(源码+文档+讲解视频)
java·spring boot·后端