← 学习中心

设计模式:结构型与行为型(代理/策略/观察者/模板)

代理(静态/JDK动态/CGLIB)、策略消除 if-else、观察者解耦、模板方法固定骨架。

本节你将能

说清四种常用结构/行为型模式的适用场景与 Spring 中的落地。

核心要点

  • 代理:静态代理写死;JDK 动态代理基于接口(InvocationHandler);CGLIB 基于继承(不能代理 final)。
  • 策略 Strategy:把算法族封装为独立类,运行时注入,消除大量 if-else。
  • 观察者 Observer:发布-订阅,Spring 的 ApplicationEvent 即典型实现。
  • 模板方法:父类定义算法骨架与钩子,子类填充步骤(如 JdbcTemplate)。
  • 适配器/装饰器:适配器兼容接口,装饰器动态增强(如 Java IO 的 BufferedInputStream)。

面试连招

常被追问:JDK 动态代理与 CGLIB 区别?Spring AOP 默认用哪个?策略与工厂怎么选?

常见坑

用 CGLIB 代理 final 类/方法抛异常;观察者忘记反注册导致内存泄漏。

设计模式:结构型与行为型(代理/策略/观察者/模板) | 必学必会