一、单例模式
双重检查锁(DCL)最经典,instance 必须 volatile 防指令重排产生半初始化对象:
private static volatile Singleton instance;
public static Singleton get() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) instance = new Singleton();
}
}
return instance;
}
二、工厂与代理
| 模式 | 作用 | Spring 中的体现 |
|---|---|---|
| 工厂 | 封装对象创建 | BeanFactory / FactoryBean |
| 代理 | 增强目标方法 | AOP(JDK/CGLIB) |
| 模板方法 | 固定骨架、留扩展点 | JdbcTemplate / RedisTemplate |
| 策略 | 算法可替换 | InstantiationStrategy |
三、观察者 / 责任链
- 观察者:事件通知(Spring ApplicationEvent);
- 责任链:过滤器、拦截器依次处理;
- 策略:消除 if-else 分支(如多种支付方式)。
面试重点不是背 UML,而是”这个模式解决了什么耦合/扩展问题、在框架哪用”。