12Head First Design Patterns(第2版)

模式中的模式

模式综合

模式关系模式组合重构时机设计原则总结

🎯 AI 时代的学习建议:不要只读理论。理解这一章的设计动机(为什么需要这个概念?)和边界条件(什么情况下会失效?)。当 AI 生成的代码涉及这些概念时,你能判断它是否用对了场景。AI 能帮你总结内容,但无法替代你亲手阅读、思考、建立直觉的过程。

第12章:模式中的模式(Patterns of Patterns)

一、导读

1.1 本章学习目标

第12章是全书的总结,探讨模式之间的关系、如何组合使用模式、以及何时重构。

1.2 为什么第十二章如此重要

设计模式不是孤立的,它们之间有密切的关系。理解模式之间的关系,才能灵活运用。

1.3 核心问题引导

模式之间有什么关系?

如何组合使用多个模式?

何时应该重构?

设计原则如何总结?


二、核心概念详解

12.1 模式关系

创建型模式:
- 工厂方法 → 抽象工厂(扩展)
- 单例 → 工厂(控制实例化)

结构型模式:
- 装饰者 → 适配器(包装对象)
- 代理 → 装饰者(控制访问 vs 添加行为)

行为型模式:
- 策略 → 状态(选择算法 vs 状态转换)
- 命令 → 策略(封装请求 vs 封装算法)
- 观察者 → 中介者(多对多通信)

12.2 模式组合

java
// 策略 + 工厂 + 模板方法
public class PaymentProcessor {
    // 工厂:创建支付策略
    private PaymentStrategy strategy;
    
    // 模板方法:定义支付流程
    public final void process(PaymentRequest request) {
        validate(request);
        strategy.pay(request);
        notify(request);
    }
    
    private void validate(PaymentRequest request) { }
    private void notify(PaymentRequest request) { }
}

12.3 设计原则总结

设计原则:
1. 封装变化
2. 组合优于继承
3. 面向接口编程
4. 为交互设计,而不是为实现设计
5. 最小知识原则
6. 依赖倒置原则
7. 开放-关闭原则
8. 单一职责原则

12.4 重构时机

重构信号:
- 重复代码
- 过长的方法
- 过大的类
- 过多的参数
- 过深的嵌套
- 过多的 if-else
- 特性依恋(方法过多使用其他类的数据)

三、实战案例

12.1 MVC 中的模式

MVC 架构中的模式:
- Model:观察者模式(通知 View 变化)
- View:组合模式(UI 组件树)
- Controller:策略模式(处理不同请求)

整体:
- 观察者:Model → View
- 组合:View 组件
- 策略:Controller 处理
- 适配器:Controller 适配 Model 和 View

四、本章小结

设计模式之间有密切关系。可以组合使用多个模式。遵循设计原则,在出现重构信号时及时重构。


五、思考与练习

模式之间有什么关系?

如何组合使用多个模式?

MVC 中使用了哪些模式?

何时应该重构?

设计原则如何总结?


12/12模式中的
0%