设计模式的基石

设计模式按照我的理解来说就是将那些优秀代码中的可复用部分抽象出来,让我们这些菜鸟可以模仿抄袭。至于我们为什么要模仿,当然是这些抽象出来的固定模式可以让我们的代码结构清晰,易于扩展,便于理解。

那么这些大神是如何设计出这些优秀的模式的?秘诀就是遵循下列设计原则:

  1. 单一职责(Single Responsibility Principle):专人专事,每个类的角色应该是单一的。这样设计的好处是我们可以像搭积木一样将功能单一的类组合成复杂的类,对于设计维护扩展理解都有很大的好处。
  2. 开闭原则(Open/Close Principle):通俗来说就是在原有代码上进行扩展而不是进行修改。这样可以保证已有逻辑的正常。开闭原则要求我们需要在设计软件的时候就保留扩展接口,这样在升级优化或者增加新功能的时候就可以不用改动旧逻辑了。
  3. 里氏替换(Liskov Substitution Principle):很难记的名字。。。一言蔽之就是抽象类的设计需要包含子类所有的特性。这样后续扩展新子类的时候就不会造成接口不适配的问题。
  4. 接口隔离(Interface Segregation Principle):抽象类的设计需要尽可能的小,这样有两个好处,一个是客户端依赖减少,另一个是子类的设计可以更加简单。
  5. 依赖倒置(Dependency Inversion Principle):意思就是在写代码的时候尽可能的依赖抽象类,这样便于以后的增加新子类来扩展功能,而且也减少对各种子类实现的依赖。
  6. 迪米特法则(law of Demeter):减少模块之间的依赖来达到松耦合的目的。

上面的五个原则合起来就是Solid原则,加上第六个就是我们在写代码时需要考虑的方向。有法可依,有法必依,才能让我们的代码更加简洁合理易于扩展和维护。不过还是要提醒一下,过犹不及,在理解了设计模式并灵活运用之前切勿过度设计,画虎不成反类犬就搞笑了。后面就让我来介绍一下23种基础的设计模式,以及如何使用C++语言来实现对应模式的案例。

参考:

《秒懂设计模式》

《》

相关推荐
_olone1 天前
Luogu P2704 [NOI2001] 炮兵阵地
c++·算法·状压dp
c238561 天前
互斥锁高频面试题全解:从基础概念到底层实现,一文通关
java·c++·面试·职场和发展
北冥you鱼1 天前
Go 语言读取链上数据:从基础到实战
开发语言·后端·golang
nianniannnn1 天前
c++复习自存--继承
开发语言·c++
叩码以求索1 天前
经典算法实例分析:写字符串需要的行数
开发语言·javascript·ecmascript
饼干哥哥1 天前
我开发了一个「吃掉」别人Skill来升级的饕餮.Skill,现在免费开源
人工智能·设计模式·开源
我是唐青枫1 天前
Kotlin 运算符重载详解:为什么 a += b 有时改对象,有时换对象?
开发语言·kotlin
2zcode1 天前
基于MATLAB图像处理的饮料瓶识别与价格显示系统设计与实现
开发语言·图像处理·matlab
王老师青少年编程1 天前
2026年6月GESP真题及题解(C++二级):完全平方数计数
c++·题解·真题·gesp·二级·2026年6月·完全平方数计数
zwenqiyu1 天前
非线性字符串数据结构串讲
数据结构·c++·学习·算法