C++设计模式原理与实战(视频教程)
概述
- 设计模式是软件设计中反复出现的问题的可复用解决方案,它凝结了无数开发者的经验,能够提升代码的可维护性、可扩展性和可读性。在 C++ 中,设计模式通常基于类的封装、继承、多态等特性实现,可分为创建型模式、结构型模式和行为型模式三大类。
- 视频教程:
https://pan.quark.cn/s/8ea8e668091c
设计模式的核心原则
在学习具体模式前,需先掌握设计模式的底层指导原则 ——SOLID 原则,它是判断代码设计优劣的重要标准:
单一职责原则(Single Responsibility):
- 一个类只负责一个功能领域的职责,避免因需求变更导致类频繁修改。
- 反例:一个UserService类同时处理用户登录、数据存储、日志打印。
- 正例:拆分出UserAuth(登录)、UserRepository(存储)、Logger(日志)三个类。
开放 - 封闭原则(Open/Closed):
- 对扩展开放(可新增功能),对修改关闭(不改动原有代码)。
- 关键实现手段:抽象基类 + 子类扩展(如多态)。
里氏替换原则(Liskov Substitution):
- 子类对象可替换父类对象,且不改变程序的正确性。
- 反例:子类重写父类方法时缩小输入参数范围(如父类接收Animal,子类只接收Cat)。
接口隔离原则(Interface Segregation):
- 客户端不应依赖其不需要的接口,需将庞大的接口拆分为细粒度接口。
- 反例:一个Shape接口包含drawCircle()、drawRectangle(),强制圆形类实现drawRectangle()。
- 正例:拆分为CircleShape和RectangleShape两个专用接口。
依赖倒置原则(Dependency Inversion):
- 依赖抽象(接口 / 抽象类),而非具体实现;高层模块不依赖低层模块,二者均依赖抽象。
- 反例:Car类直接依赖GasEngine类(低层具体实现),无法替换为ElectricEngine。
- 正例:Car依赖Engine抽象基类,GasEngine和ElectricEngine实现Engine,可灵活替换。