专业的JAVA编程教程与资源

网站首页 > java教程 正文

京东大佬问我,常用的java设计模式有哪些?

temp10 2025-03-30 21:00:11 java教程 2 ℃ 0 评论

京东大佬问我,常用的java设计模式有哪些?

我需要回忆一下设计模式的基本分类,通常分为创建型、结构型和行为型。然后,针对每个类别,列举最常用的模式,并给出简单的解释和例子。

京东大佬问我,常用的java设计模式有哪些?

创建型模式里,单例模式肯定常用,比如配置管理。工厂方法和抽象工厂可能也要提到,特别是Spring框架中的应用。建造者模式在处理复杂对象构造时有用,比如Lombok的@Builder。原型模式可能用得少一些,但Java的clone方法是一个例子。

结构型模式中,适配器模式很常见,比如旧系统接口转换。装饰器模式在Java IO流里应用广泛,比如BufferedReader。代理模式,特别是动态代理,Spring AOP会用。组合模式处理树形结构,比如菜单。外观模式简化接口,比如Slf4j。享元模式在池技术中常见,比如数据库连接池。

行为型模式里,观察者模式在事件驱动系统中常用,比如Java的事件监听。策略模式在替换算法时有用,比如Comparator。模板方法在定义算法骨架时使用,比如JdbcTemplate。责任链模式,比如Servlet的Filter。状态模式处理状态转换,比如订单状态。命令模式将请求封装为对象,比如任务队列。迭代器模式用于集合编历,Java的Iterator。中介者模式减少对象间依赖,比如聊天室。访问者模式处理复杂对象结构,比如ASM库。备忘录模式保存对象状态,比如事务回滚。

需要注意的是,用户提到是京东大佬问的,可能需要结合实际应用场景,特别是高并发、分布式系统中的使用。比如单例模式的双重检查锁,Spring中的代理和工厂,以及微服务中的模式应用。可能还要强调设计模式解决的实际问题,而不仅仅是理论。

总结时,需要分点清晰,每个模式简要说明,并举例Java中的应用场景,帮助用户理解。同时,根据用户可能的背景(面试或实际工作),调整回答的深度和侧重。

在Java开发中,设计模式是解决常见问题的经典方案。以下是24种设计模式中高频使用的核心模式,按分类整理并附带典型应用场景:


一、创建型模式(解决对象创建问题)

  1. 单例模式(Singleton)
  2. 保证一个类仅有一个实例(如配置管理、线程池)
  3. 关键代码:双重检查锁、枚举实现
  4. Runtime.getRuntime() 是JDK经典实现
  5. 工厂方法模式(Factory Method)
  6. 解耦对象创建(Spring的BeanFactory)
  7. 例如:Calendar.getInstance() 根据时区创建对象
  8. 抽象工厂模式(Abstract Factory)
  9. 创建产品族(不同数据库连接的工厂)
  10. MyBatis的SqlSessionFactory 生产不同数据库会话
  11. 建造者模式(Builder)
  12. 分步构建复杂对象(Lombok的@Builder)
  13. 如StringBuilder和JSON库的对象构造
  14. 原型模式(Prototype)
  15. 克隆对象提升性能(避免重复初始化)
  16. 实现Cloneable接口,深拷贝/浅拷贝需注意

二、结构型模式(处理类与对象组合)

  1. 适配器模式(Adapter)
  2. 兼容不兼容接口(旧系统改造)
  3. Spring MVC的HandlerAdapter处理多种Controller
  4. 装饰器模式(Decorator)
  5. 动态扩展功能(Java IO流体系)
  6. BufferedInputStream增强基础流功能
  7. 代理模式(Proxy)
  8. 控制对象访问(AOP切面编程)
  9. Spring的动态代理(JDK Proxy/CGLib)
  10. 组合模式(Composite)
  11. 树形结构处理(菜单/文件系统)
  12. MyBatis的SqlNode解析动态SQL
  13. 外观模式(Facade)
  14. 简化复杂子系统调用(日志门面Slf4j)
  15. 例如整合支付接口的统一入口
  16. 享元模式(Flyweight)
  17. 共享细粒度对象(连接池、String常量池)
  18. 如Integer缓存-128~127

三、行为型模式(对象间通信与职责划分)

  1. 观察者模式(Observer)
  2. 事件驱动机制(GUI事件监听)
  3. Spring的ApplicationEvent事件机制
  4. 策略模式(Strategy)
  5. 动态切换算法(支付方式选择)
  6. Comparator接口实现多种排序策略
  7. 模板方法模式(Template Method)
  8. 定义算法骨架(JdbcTemplate抽象流程)
  9. 如Servlet的service()方法结构
  10. 责任链模式(Chain of Responsibility)
  11. 请求的链式处理(权限校验链)
  12. Servlet Filter和Spring Interceptor
  13. 状态模式(State)
  14. 状态驱动行为(订单状态流转)
  15. 线程状态Thread.State切换
  16. 命令模式(Command)
  17. 封装请求为对象(任务队列、撤销操作)
  18. Java的Runnable即是一个命令对象
  19. 迭代器模式(Iterator)
  20. 统一集合遍历方式(Java的Iterator接口)
  21. 增强for循环底层实现
  22. 中介者模式(Mediator)
  23. 解耦对象间交互(聊天室消息转发)
  24. Spring的ApplicationContext管理Bean协作
  25. 访问者模式(Visitor)
  26. 解耦数据结构与操作(ASM字节码操作)
  27. 编译器语法树分析常用

高频综合应用场景

  • Spring框架:工厂模式(BeanFactory)、代理模式(AOP)、模板方法(JdbcTemplate)
  • 高并发系统:单例模式(线程安全实现)、享元模式(池化技术)
  • 分布式架构:责任链模式(网关过滤器)、策略模式(路由算法)

掌握这些模式的关键在于理解其适用场景而非强行套用,好的设计往往是多种模式的有机结合。建议通过源码(如JDK、Spring)加深理解,并思考如何解决过度设计的问题。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表