java三种常见设计模式,工厂、策略、责任链
设计模式实战解析
一、工厂模式(点外卖模式)
1. 核心思想
2. 实际应用
- Spring框架:
BeanFactory
- JDBC:
DriverManager.getConnection()
3. 三种变体对比
类型 |
特点 |
示例场景 |
简单工厂 |
一个工厂生产所有产品 |
小型电商商品创建 |
工厂方法 |
每个产品有专属工厂 |
跨平台UI组件创建 |
抽象工厂 |
生产整套产品家族 |
不同风格GUI组件套装 |
二、策略模式(支付选择模式)
1. 核心思想
2. 实际应用场景
- 电商促销策略(满减/折扣/优惠券)
- 地图导航策略(驾车/步行/公交)
- 数据压缩策略(ZIP/RAR/7z)
三、责任链模式(审批流程模式)
1. 核心思想
2. 典型应用场景
应用领域 |
具体实现案例 |
Web开发 |
Servlet Filter链 |
游戏开发 |
伤害计算处理链 |
企业应用 |
多级审批系统 |
安全框架 |
Spring Security过滤器链 |
四、对比总结表
对比维度 |
工厂模式 |
策略模式 |
责任链模式 |
主要目的 |
对象创建 |
算法切换 |
请求处理 |
灵活性 |
创建过程可配置 |
运行时动态替换 |
处理流程可重组 |
典型应用 |
对象创建场景 |
多种算法策略场景 |
多级处理场景 |
JDK示例 |
Calendar.getInstance() |
Comparator |
Servlet Filter |
Spring示例 |
BeanFactory |
ResourceLoader |
HandlerInterceptor |
五、面试常见问题
1. 工厂模式相关问题
- Q:Spring中的BeanFactory和FactoryBean有什么区别?
- A:BeanFactory是容器,FactoryBean是特殊Bean的工厂
2. 策略模式相关问题
- Q:为什么策略模式常和工厂模式配合使用?
- A:工厂负责创建策略对象,实现策略的灵活配置
3. 责任链模式相关问题
- Q:责任链模式在MyBatis中如何应用的?
- A:通过Interceptor链实现插件功能