第 01 讲
开篇:面向对象设计原则概述
为什么需要设计原则?SOLID原则的由来与核心思想,设计原则与设计模式的关系。
SOLID思想
第 02 讲
单一职责原则(SRP)上
定义与起源,一个类只负责一个职责,职责的定义与粒度控制。
SRP粒度
第 03 讲
单一职责原则(SRP)下
实际案例——用户管理模块的拆分,过度细分的陷阱,SRP与类的内聚性。
案例内聚
第 04 讲
开闭原则(OCP)上
定义与核心思想,对扩展开放,对修改关闭,抽象化是关键。
OCP抽象
第 05 讲
开闭原则(OCP)下
实际案例——支付系统的策略模式实现,OCP与继承、组合的关系。
策略模式支付
第 06 讲
里氏替换原则(LSP)上
定义与数学基础,子类必须能够替换父类,契约式设计。
LSP契约
第 07 讲
里氏替换原则(LSP)下
实际案例——矩形与正方形的经典问题,LSP与继承的正确使用。
经典继承
第 08 讲
接口隔离原则(ISP)上
定义与起源,客户端不应该依赖它不需要的接口,胖接口的问题。
ISP接口
第 09 讲
接口隔离原则(ISP)下
实际案例——打印机系统的接口拆分,ISP与单一职责的区别。
打印机拆分
第 10 讲
依赖倒置原则(DIP)上
定义与核心思想,高层模块不应依赖低层模块,抽象不应依赖细节。
DIP抽象
第 11 讲
依赖倒置原则(DIP)下
实际案例——数据访问层的依赖注入,IoC容器与DIP。
DIIoC
第 12 讲
迪米特法则(LoD)上
定义与起源,最少知识原则,朋友类的定义。
LoD最少知识
第 13 讲
迪米特法则(LoD)下
实际案例——中介者模式的应用,LoD与松耦合。
中介者解耦
第 14 讲
合成复用原则(CRP)
优先使用对象组合,而不是类继承,组合与继承的选择策略。
CRP组合
第 15 讲
SOLID原则总结与对比
五大原则的内在联系,如何在实际项目中综合运用。
SOLID综合
第 16 讲
设计原则与设计模式的关系
原则是道,模式是术,从原则推导模式的方法。
道与术推导
第 17 讲
从SRP到工厂模式
工厂模式如何体现单一职责,简单工厂、工厂方法、抽象工厂。
工厂创建型
第 18 讲
从OCP到策略模式
策略模式如何实现开闭原则,策略的注册与动态切换。
策略动态
第 19 讲
从LSP到模板方法模式
模板方法如何保证子类行为一致,好莱坞原则。
模板方法好莱坞
第 20 讲
从ISP到适配器模式
适配器模式如何解决接口不兼容,类适配器与对象适配器。
适配器兼容
第 21 讲
从DIP到依赖注入
依赖注入的三种方式(构造器、Setter、接口),DI容器设计。
DI容器
第 22 讲
从LoD到中介者模式
中介者如何解耦多对多关系,与观察者模式的区别。
中介者观察者
第 23 讲
从CRP到装饰器模式
装饰器如何实现动态组合,与继承的对比。
装饰器组合
第 24 讲
面向对象设计原则在C++中的特殊性
C++的多继承、模板、RAII对设计原则的影响。
C++RAII
第 25 讲
C++中的接口设计
纯虚类作为接口,接口继承与实现继承,NVI(非虚接口)模式。
NVI纯虚
第 26 讲
C++中的const正确性与设计原则
const成员函数与接口设计,const与线程安全。
const线程安全
第 27 讲
C++中的RAII与设计原则
资源管理类的SRP,RAII如何辅助DIP。
RAII资源
第 28 讲
C++中的模板与设计原则
模板元编程与OCP,策略类模板,类型擦除。
模板类型擦除
第 29 讲
C++中的智能指针与设计原则
shared_ptr/unique_ptr与资源所有权,weak_ptr打破循环引用。
智能指针所有权
第 30 讲
C++中的移动语义与设计原则
移动构造函数与SRP,移动后的状态设计。
移动语义SRP
第 31 讲
设计原则在游戏开发中的应用
游戏对象组件化(SRP),事件系统(OCP),状态机(LSP)。
游戏组件
第 32 讲
设计原则在嵌入式系统中的应用
内存受限下的设计原则,静态多态与CRTP。
嵌入式CRTP
第 33 讲
设计原则在金融系统中的应用
交易系统的稳定性设计,审计日志与OCP。
金融审计
第 34 讲
设计原则在GUI框架中的应用
MVC/MVVM架构中的设计原则,信号与槽机制。
GUIMVC
第 35 讲
设计原则在网络库中的应用
Reactor/Proactor模式中的设计原则,回调与DIP。
网络Reactor
第 36 讲
设计原则在数据库访问层中的应用
ORM框架的设计,Repository模式与DIP。
ORMRepository
第 37 讲
设计原则在配置系统中的应用
配置文件的解析与验证,策略模式实现配置热加载。
配置热加载
第 38 讲
设计原则在日志系统中的应用
多级别日志,适配器模式实现多输出目标。
日志适配器
第 39 讲
设计原则在缓存系统中的应用
LRU/LFU缓存设计,装饰器模式实现缓存统计。
缓存LRU
第 40 讲
设计原则在插件系统中的应用
动态加载与OCP,插件接口的ISP设计。
插件动态加载
第 41 讲
设计原则在测试中的应用
可测试性设计,依赖注入与Mock对象,SRP与单元测试。
测试Mock
第 42 讲
设计原则在重构中的应用
识别代码坏味道,逐步引入设计原则,重构案例实战。
重构坏味道
第 43 讲
设计原则与代码评审
如何在Code Review中检查设计原则,常见违反案例。
Code Review评审
第 44 讲
设计原则与团队协作
统一设计规范,代码风格与设计原则的平衡。
团队规范
第 45 讲
设计原则与性能优化
设计原则是否影响性能?何时可以打破原则?
性能权衡
第 46 讲
设计原则的权衡
过度设计的陷阱,YAGNI原则,KISS原则与设计原则的平衡。
YAGNIKISS
第 47 讲
设计原则与架构风格
分层架构、六边形架构、整洁架构中的设计原则。
架构整洁架构
第 48 讲
设计原则与微服务
微服务拆分与SRP,服务接口与ISP,服务依赖与DIP。
微服务SRP
第 49 讲
设计原则的未来
C++20/23新特性对设计原则的影响(概念、协程、模块)。
C++20协程
第 50 讲
总结与展望
50讲回顾,如何持续提升设计能力,推荐书籍与资源。
总结书单