设计模式实战解析
一、工厂模式(点外卖模式)
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链实现插件功能