java三种常见设计模式,工厂、策略、责任链

设计模式实战解析

一、工厂模式(点外卖模式)

1. 核心思想

  • 代替直接new对象
  • 像点外卖一样获取对象

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链实现插件功能
相关推荐
进击的_鹏20 分钟前
【C++】红黑树的实现
开发语言·c++
Magnum Lehar27 分钟前
vulkan游戏引擎vulkan部分的fence实现
java·前端·游戏引擎
on the way 12330 分钟前
创建型模式之Factory Method(工厂方法)
android·java·工厂方法模式
码农秋33 分钟前
设计模式系列(05):工厂方法模式(Factory Method)
设计模式·工厂方法模式
无心水37 分钟前
【后端高阶面经:MongoDB篇】41、MongoDB 是怎么做到高可用的?
java·开发语言·mongodb·java面试·高可用·后端高阶面经·后端工程师的高阶面经
无心水42 分钟前
【后端高阶面经:MongoDB篇】40、怎么优化MongoDB的查询性能?
java·开发语言·mongodb·java面试·后端高阶面经·后端工程师的高阶面经·java高阶面经
信息化未来1 小时前
python 生成复杂表格,自动分页等功能
开发语言·数据结构·python
程序猿阿伟1 小时前
《深入Python:新手易踩的语法雷区与进阶启示》
开发语言·python
gb42152871 小时前
更新时间相差8个小时
java·开发语言
qqxhb1 小时前
零基础设计模式——结构型模式 - 组合模式
设计模式·组合模式