设计模式的基石

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

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

  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++语言来实现对应模式的案例。

参考:

《秒懂设计模式》

《》

相关推荐
倒头就睡的小比特4 天前
算法竞赛C++常用的STL
c++·算法
weilx12344 天前
C++笔记-文件IO-<fcntl.h>
c++
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读4 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
Smileyqp沛沛4 天前
前端?C++ ?较大差异基础罗列
c++·基础·前端转c++
C语言小火车4 天前
C/C++ 为什么需要编译器?
开发语言·c++
旖旎夜光4 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
吞下星星的少年·-·4 天前
C++ 萌新语法入门篇
c++·算法比赛
霍霍的袁4 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
another heaven4 天前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法