README
# 面向对象设计 · 12 篇主线之旅
一条主线、十二篇文章、一个真实可跑的电商订单系统——
从对象的本质到业务的本质,由浅入深、案例贯穿、Mermaid 图加深理解。
# 🎯 这个专栏与市面其他专栏有什么不同?
市面上的面向对象专栏大多是"教科书式精炼"——你读完会同意,但不会被震撼,也不会想立刻去重构自己的代码。
本专栏做了三件市面少见的事:
| 差异点 | 我们怎么做 |
|---|---|
| 沉浸式开篇 | 每一篇都从一次真实事故开篇——不是讲定义,是讲翻车 |
| 探索式论证 | 不直接给结论——用"假设 → 反驳 → 实证 → 升华"的推理过程让你"看见思考" |
| 连续剧式综合案例 | 11 篇共用一条主线:电商订单系统从 0 到 DDD 的完整演化——读完即拥有一个真实系统 |
# 📚 阅读路径
flowchart LR
一[01 思想<br/>对象 vs 过程] --> 二[02 特性<br/>四大基石]
二 --> 三[03 接口vs抽象类<br/>选哪个]
三 --> 四[04 接口编程<br/>不锁死实现]
四 --> 五[05 组合vs继承<br/>避开继承陷阱]
五 --> 六[06 设计原则<br/>SOLID 全景]
六 --> 七[07 SOLID 案例汇<br/>实战滥用与正用]
七 --> 八[08 坏味道大全<br/>30+ 病历卡]
八 --> 九[09 重构十二式<br/>把烂代码救回来]
九 --> 十[10 可测试性设计<br/>OOP 的硬验收]
十 --> 十一[11 DDD 战术建模<br/>从代码到业务]
十一 --> 十二[12 综合实战<br/>图片框架实现]
十二 -.闭环.-> 一
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 📖 章节列表
| # | 章节 | 主题 | 关键案例 | 关键图表 |
|---|---|---|---|---|
| 01 | 面向对象设计思想 | 范式之别 | 双 11 雪崩订单系统 | 网状 vs 线性流程图 |
| 02 | 面向对象的特性 | 封装/抽象/继承/多态 | 钱包余额对不上排查 | vtable 内存布局图 |
| 03 | 接口vs抽象类比较 | 何时选哪个 | 日志器 47 次改动复盘 | 决策树、模板时序图 |
| 04 | 接口而非实现编程 | 依赖抽象不依赖具体 | 云迁移 6 万行连锁修改 | 三步重构演化图 |
| 05 | 多用组合和少继承 | 继承陷阱与组合优雅 | 企鹅会飞继承翻车 | 类爆炸 vs 正交组合 |
| 06 | 设计原则全景图 | SOLID + 23 模式 | 8000 行上帝类失控 | SOLID 关系图 |
| 07 | SOLID 原则案例汇 ⭐ | SOLID 在战场上 | 团队三年 SOLID 之争 | 滥用现场扫描图 |
| 08 | 反模式与坏味道 ⭐ | 30+ 嗅觉清单 | PR 被驳回 17 次 | 坏味道地图 |
| 09 | 重构十二式实战 | 12 个最常用手法 | 1200 行结算函数救援 | 重构节奏循环 |
| 10 | 可测试性设计 ⭐ | OOP 的硬验收 | 95% 覆盖率上线即崩 | 测试金字塔 |
| 11 | DDD 与战术建模 ⭐ | 从代码到业务 | 需求文档 70% 失真 | 限界上下文图 |
| 12 | 综合实战图片框架 ⭐ | 完整系统实现 | 图片处理系统实战 | 完整架构图 |
⭐ = 本轮新增章节
# 🎬 主线案例——电商订单系统的 12 次演化
每篇都在前一篇的基础上演化——读完全栏,你就拥有一个真实可运行的"电商订单+支付+风控+营销"系统。
flowchart LR
P1[01 订单总价<br/>裸过程式版] --> P2[02 钱包<br/>封装版]
P2 --> P3[03 日志器<br/>抽象类版]
P3 --> P4[04 支付渠道<br/>接口版]
P4 --> P5[05 商品类型<br/>组合版]
P5 --> P6[06 SOLID<br/>重排版]
P6 --> P7[07 SOLID<br/>实战版]
P7 --> P8[08 坏味道<br/>扫除版]
P8 --> P9[09 重构十二式<br/>洗牌版]
P9 --> P10[10 可测试<br/>注入版]
P10 --> P11[11 DDD<br/>限界上下文版]
P11 --> P12[12 综合实战<br/>图片框架版]
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
每篇结尾会留下一段"半成品代码"——作为下一篇综合案例的起点。
你将像看连续剧一样,亲眼看着一个粗糙脚本演化为一个工程级系统。
# 🎓 你将学到什么
flowchart TB
A[语言层<br/>对象怎么写] --> A1[01-02 思想+特性]
B[结构层<br/>对象怎么连] --> B1[03-05 接口/抽象类/组合]
C[原则层<br/>写得对] --> C1[06-07 SOLID 全景+案例汇]
D[识别层<br/>看得出错] --> D1[08 坏味道大全]
E[修复层<br/>救得回] --> E1[09 重构十二式]
F[验收层<br/>测得动] --> F1[10 可测试性设计]
G[业务层<br/>建得对] --> G1[11 DDD 战术建模]
H[实战层<br/>完整实现] --> H1[12 综合实战图片框架]
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
| 层次 | 核心能力 | 对应篇目 |
|---|---|---|
| 语言层 | 对象、类、四大特性的本质 | 01-02 |
| 结构层 | 用接口、抽象类、组合连接对象 | 03-05 |
| 原则层 | SOLID 在真实战场的滥用与正用 | 06-07 |
| 识别层 | 30+ 坏味道的嗅觉训练 | 08 |
| 修复层 | 12 式安全重构 | 09 |
| 验收层 | 让设计可被测试验证 | 10 |
| 业务层 | 用 DDD 表达业务而非数据 | 11 |
| 实战层 | 完整系统实现与架构设计 | 12 |
# 👥 适合人群
| 人群 | 收获 |
|---|---|
| 0-3 年工程师 | 建立对象式心智模型,写出"不被未来打脸"的代码 |
| 3-5 年工程师 | 识别已有项目的坏味道,用 SOLID 与重构手法救活遗留代码 |
| 架构师/Tech Lead | 用 DDD 与限界上下文重塑业务建模,统一团队语言 |
| 面试备战者 | 学会用真实事故案例阐述 OOP——超越教科书答法 |
# 📐 写作约定
- 文件名:4-10 字(含序号)
- 二级、三级标题:4-10 字
- 每篇结构:
00. 真实事故开篇(沉浸式 1500-2000 字) ├─ 翻车现场 ├─ 五次反转排查 └─ 灵魂五连问 ← 串起全篇 01-NN. 主体内容 ├─ 假设 → 反驳 → 实证 → 升华 ├─ 1-2 张 Mermaid 图 └─ 反模式警示框 NN+1. 综合实战案例 ├─ 不用本篇思想 → 翻车 ├─ 用本篇思想 → 演化 ├─ 类图 + 时序图 └─ 三道思考题(易/中/难) NN+2. 总结 + 下篇衔接1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 - 由浅入深:从一个具体翻车现场出发 → what → why → how → 边界 → 延伸
# 🔗 配套延伸
| 方向 | 推荐 |
|---|---|
| 23 种设计模式 | 设计模式实战 (opens new window) |
| 架构思想 | DDD、整洁架构、六边形架构(详见第 11 篇) |
| 重构进阶 | Martin Fowler《重构》、Kent Beck《实现模式》 |
| 编程进阶网站 | yccoding.com (opens new window) |
# 🚧 升级状态(v2.0)
| 状态 | 说明 |
|---|---|
| ✅ 完成 | 12 篇章节骨架就位、主线案例规划、README 更新 |
| 🛠 进行中 | 01-06 篇按"事故开篇 + 探索论证 + 综合案例"标杆改造 |
| 🛠 进行中 | 07/08/10/11/12 篇深度撰写 |
| 📋 计划 | 09 篇加综合案例 + 与 08 篇坏味道地图对齐 |
当前推进节奏:先以 01 篇作为标杆完成深度改造,再批量复制到 02-09 篇。
上次更新: 2026/06/17, 11:43:57