编程进阶网 编程进阶网
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接

杨充

专注编程 · 终身学习者
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接
  • README
  • 面向对象设计

    • README
      • 🎯 这个专栏与市面其他专栏有什么不同?
      • 📚 阅读路径
      • 📖 章节列表
      • 🎬 主线案例——电商订单系统的 12 次演化
      • 🎓 你将学到什么
      • 👥 适合人群
      • 📐 写作约定
      • 🔗 配套延伸
      • 🚧 升级状态(v2.0)
    • 面向对象设计思想
    • 面向对象特性思考
    • 接口vs抽象类比较
    • 接口而非实现编程
    • 多用组合和少继承
    • 设计原则的全景图
    • SOLID原则案例汇
    • 反模式与坏味道
    • 重构十二式的实战
    • 可测试性实战设计
    • DDD与战术的建模
    • 综合实战图片框架
  • 常见设计原则

  • 巧学设计模式

  • 系统架构设计

  • 编程
  • 面向对象设计
杨充
2022-01-03
目录

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

# 📖 章节列表

# 章节 主题 关键案例 关键图表
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

每篇结尾会留下一段"半成品代码"——作为下一篇综合案例的起点。
你将像看连续剧一样,亲眼看着一个粗糙脚本演化为一个工程级系统。


# 🎓 你将学到什么

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
层次 核心能力 对应篇目
语言层 对象、类、四大特性的本质 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
README
面向对象设计思想

← README 面向对象设计思想→

最近更新
01
信号崩溃快速排查
06-15
02
CoreDump破案
06-15
03
perf火焰图实战
06-15
更多文章>
Theme by Vdoing | Copyright © 2019-2026 杨充 | MIT License | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式