先想清楚:你为什么需要补设计模式这一课

能写 C++ 不等于能组织 C++ 代码。很多人卡在同一个位置:语法熟、STL 会用,但一旦项目上到几千行、类之间开始互相引用,改一个需求就牵出五处编译错误。这不是水平不够,而是缺一套描述「对象之间如何协作」的词汇表。设计模式就是这套词汇表。

这门课面向的正是这类缺口:有 C++ 基础,但对设计模式只停留在「听过单例、工厂」的层面,说不清什么时候该用、用了之后代码结构会变成什么样。如果你正在准备架构方向的面试,或者接手了一个越改越乱的模块,这份资料值得按顺序过一遍。

它讲的不只是 23 个名字

课程把模式拆成两条线走:一条是模式本身的结构与适用场景,另一条是它在 C++ 里的落地写法。C++ 有虚函数、模板、多重继承、RAII 这些别的语言没有的东西,同一个模式在 C++ 里的实现方式和 Java 里并不一样,这也是为什么值得专门找一门 C++ 的设计模式课,而不是拿本通用模式书硬套。

从资料线索能看出课程的覆盖面比较广:既有组合模式这类结构型模式,也有解释器模式这类行为型模式,还有注册模式这种偏工程实践的组织方式。组合模式那一节直接落到树形递归结构的面向对象实现,解释器模式则用一个加减法运算器的例子把定义、场景和实现串起来——这种「先讲清楚它解决什么问题,再动手写」的顺序,比一上来背 UML 图有用得多。

偏向工程,而不是背概念

课程的标题里带「实战」两字,从内容编排上看确实如此。它没有停在模式的定义和类图上,而是延伸到实际项目中会遇到的问题:一个功能模块怎么组织类之间的关系、需求变动时哪一层该保持稳定、哪些看似优雅的写法其实是过度设计。

这对转岗或查漏补缺的人尤其重要。面试里问设计模式,多半不是让你背定义,而是给一个场景问你选哪个模式、为什么。能讲清楚「这里用组合模式是因为结构本身是递归的,新增节点类型不用改遍历逻辑」,比复述教科书定义有说服力得多。

看完应该能回答这几个问题

  • 给定一段有大量 if-else 分支或类型判断的代码,能判断它是否适合用某个模式重构,以及重构后结构会怎么变。
  • 组合模式和继承的区别在哪里,什么情况下树形结构必须用前者。
  • 解释器模式适合处理哪类问题,为什么它常被滥用,边界在哪。
  • 注册模式这类偏工程的组织方式,在框架或插件式设计里解决了什么实际问题。
  • 面对一个具体需求,能说出两三种候选模式并比较取舍,而不是只想到单例和工厂。

怎么用这份资料

建议不要跳着看。设计模式之间有依赖关系,组合、装饰、责任链这些模式共享相似的结构思路,顺序看下来更容易建立整体感。每看完一个模式,最好回到自己正在写或写过的代码里找一处对应的地方,哪怕只是把它标记出来——能对应上,说明真的理解了;对应不上,就是下一轮要补的地方。

如果时间紧,可以优先看结构型和行为型里你项目中最常出问题的部分,把创建型留到最后。但无论如何,别只停留在「看懂了」——设计模式是写出来的,不是读出来的。

【夏曹俊】C++ 设计模式理论与实战大全-架构师必学视频课

架构师必备,深入浅出设计模式

编辑点评

系统讲解C++设计模式,理论与实践结合,适合有C++基础的开发者。

⭐ 编辑推荐

本课程由夏曹俊老师主讲,深入浅出讲解C++设计模式,涵盖注册模式、组合模式、解释器模式等,适合有C++基础的开发者学习。

课程亮点

• 系统讲解C++设计模式
• 理论与实践结合
• 适合有C++基础的开发者

课程目录

【夏曹俊】C++ 设计模式理论与实战大全-架构师必学视频课资料.png  [493.5 KB]
5-18、注册了XErasGraph完成了橡皮檫功能_ev.mp4  [33.1 MB]
3-10、组合模式的实用工程技术——树形(递归)结构的面向对象实现_ev.mp4  [167.2 MB]
4-17、解释器模式的定义场景与实现——一个简单加减法运算器的实例_ev.mp4  [59.8 MB]
4-02、模板方法的实用工程技术:好莱坞法则、钩子函数与单元测试工具_ev.mp4  [42.0 MB]
2-12、原型模式的实用工程技术——DRY原则与使用模式进行重构_ev.mp4  [33.2 MB]
5-16、重构划线到IGraph接口并添加划线的样式(颜色、链接、抗锯_ev.mp4  [60.8 MB]
3-08、包装模式的实用工程技术——MFC中CView结构设计_ev.mp4  [108.6 MB]
3-07、包装模式的定义、场景与实现——组合大于继承_ev.mp4  [63.4 MB]
5-02、MVC模式讲解_ev (1).mp4  [10.2 MB]
5-08、手动添加打开文件的信号槽_ev.mp4  [19.8 MB]
5-01、MVC图片编辑器项目介绍和UML知识回顾_ev (1).mp4  [12.5 MB]
3-01、适配器模式的定义、场景与实用工程技术:对象适配与类的适配_ev.mp4  [60.3 MB]
4-01、模板方法的定义场景与实现:将“动作”封装成对象是理解行为型_ev.mp4  [53.6 MB]
1-02、UML和设计模式导论_ev.mp4  [56.5 MB]
4-14、调停者模式的实用工程技术——多对多关系交互解耦合_ev.mp4  [15.9 MB]
3-03、享元模式Flyweight的定义场景与实现:运用共享技术_ev.mp4  [87.1 MB]
4-15、状态模式的定义场景与实现——从if_else中提取公因式_ev.mp4  [90.5 MB]
2-07、抽象工厂的定义、场景与实现——相互关联关系的对象_ev.mp4  [67.4 MB]
5-24、项目完成优化界面添加图标和按钮_ev.mp4  [40.1 MB]
3-12、桥接模式的实用工程技术:桥接模式应用评析、MFC分析_ev.mp4  [23.4 MB]
2-03、单例模式的定义场景与实现:懒汉、饿汉与多线程安全double_ev_ev.mp4  [78.1 MB]
2-06、工厂模式的实用工程技术——IOC容器与工厂模式的应用_ev_ev.mp4  [75.1 MB]
3-11、桥接模式的定义、场景与实现:一维扩展用继承,多维扩展用桥接_ev.mp4  [39.0 MB]
5-20、修正了矩形绘制的残影添加XImageGraph_ev_ev.mp4  [49.9 MB]
4-06、观察者模式的实用工程技术——出版+订阅就是观察者模式_ev_ev.mp4  [25.8 MB]
4-07、命令模式的定义、场景与实现——封装调用_ev_ev.mp4  [75.6 MB]
5-17、重构XPenGraph用模板技术在工厂中注册_ev.mp4  [31.7 MB]
5-21、完成了Undo和Redo代码_ev_ev.mp4  [31.8 MB]
2-04、单例模式的实用工程技术——从单例到多例,应用系统缓存的实现原_ev_ev.mp4  [47.8 MB]
2-09、构建者模式Builder的定义、场景与实现_ev.mp4  [108.5 MB]
2-08、抽象工厂的实用工程技术——抽象工厂的使用场景_ev.mp4  [47.1 MB]
4-05、观察者模式的定义场景与实现——订阅_发布的软件结构_ev.mp4  [140.2 MB]
5-04、抽象工厂、单例、观察者、门面模式回顾和项目类图分析_ev (1).mp4  [23.6 MB]
5-11、重载鼠标事件完成画笔功能_ev.mp4  [29.5 MB]
3-05、代理模式的定义场景与实现:控制对象访问与Cache代理_ev.mp4  [93.6 MB]
4-08、命令模式的实用工程技术——Undo撤销与宏命令_ev_ev.mp4  [146.8 MB]
4-19、访问者模式的定义场景与实现——一个手机配置环境的构建_ev.mp4  [58.5 MB]
5-12、观察者模式代码IObserver和XSubject完成_ev_ev.mp4  [21.0 MB]
4-11、备忘录模式的定义、场景与实现:备忘录与友元函数的应用_ev.mp4  [86.9 MB]
5-22、完成了画笔的粗细设置_ev_ev.mp4  [36.7 MB]
2-01、简单工厂方法的定义场景与实现-针对接口编程的设计思想剖析_ev.mp4  [78.9 MB]
4-16、状态模式的实用工程技术—自动化流水线的状态组合与业务逻辑解耦_ev.mp4  [15.5 MB]
5-07、创建XImageEdit项目并提升QWidget控件完成类实_ev.mp4  [21.3 MB]
4-12、备忘录模式的实用工程技术:httpSession、数据库快照_ev.mp4  [19.2 MB]
4-03、策略模式的定义场景与实现:is A还是has A,里氏代换原_ev.mp4  [91.3 MB]
2-02、简单工厂实用工程技术:C++对象动态创建技术与配置化开发_ev_ev.mp4  [101.6 MB]
5-10、完成XEditView的初始化和载入背景图的实现和调用_ev.mp4  [29.5 MB]
4-18、解释器模式的工程应用——解释器与数据结构、算法和编译原理_ev.mp4  [15.7 MB]
5-19、注册了XRectGraph添加了画矩形存在未清理历史图像问题_ev_ev.mp4  [25.8 MB]
2-11、原型模式的定义场景与实现——对象的快速复制_ev.mp4  [72.4 MB]
1-01、课程介绍_ev.mp4  [36.5 MB]
2-05、工厂模式的定义场景与实现——子类延迟实现父类功能的软件结构_ev_ev.mp4  [69.7 MB]
5-05、依赖的QT环境安装_ev (1).mp4  [21.7 MB]
5-03、项目功能说明用到的设计模式说明_ev (1).mp4  [14.1 MB]
3-06、代理模式的实用工程技术——AOP面向切面编程、智能指针与代理_ev.mp4  [139.8 MB]
4-21、迭代器模式方法与工程应用:STL迭代器应用与迭代器模式思想_ev.mp4  [53.8 MB]
5-14、完成控制器、模型、视图的抽象工厂模式创建_ev_ev.mp4  [42.5 MB]
5-13、观察者模式XModel和XEditView代码完成并重构_ev_ev.mp4  [46.6 MB]
5-09、完成Qt打开并显示图片_ev.mp4  [18.5 MB]
4-10、责任链模式的实用工程技术——事件冒泡、过滤器原理与责任链实现_ev.mp4  [62.8 MB]
3-04、享元模式Flyweight的实用工程技术:文件夹图标、字符串_ev.mp4  [20.8 MB]
4-22、面向对象(OO)的设计原则(总结)_ev.mp4  [37.9 MB]
2-10、构建者模式的实用工程技术——代码的坏味道:算法与对象构建的隔_ev.mp4  [99.4 MB]
3-02、门面(外观)模式Facade的定义、场景与实用工程技术_ev.mp4  [57.4 MB]
4-20、访问者模式的工程应用——工单派送、电脑组装与银行账户流程的工_ev.mp4  [34.1 MB]
5-15、将模型和视频与用户代码解耦合有门面模式的控制器来做_ev_ev.mp4  [42.1 MB]
5-06、配置QT项目和信号槽代码示例_ev (1).mp4  [27.5 MB]
5-23、完成画笔颜色设置_ev.mp4  [36.7 MB]
3-09、组合模式的定义、场景与实现:部分_整体_ev.mp4  [113.3 MB]
4-09、责任链模式的定义、场景与实现:击鼓传花_ev_ev.mp4  [40.9 MB]
4-04、策略模式的实用工程技术——支付交易系统帐户转帐、数据信令采集_ev.mp4  [38.1 MB]
4-13、调停者模式的定义场景与实现——封装交互与即插即用_ev.mp4  [94.6 MB]

适合人群

  • C++开发者
  • 软件工程师
  • 架构师

学习收获

掌握C++设计模式
提升代码架构能力
成为更优秀的开发者

祝您学习愉快!

学有所成,前程似锦!